import argparse import subprocess import time parser = argparse.ArgumentParser() parser.add_argument('-n', type=int, required=True) parser.add_argument('--binary', default='python3') args = parser.parse_args() errors = 0 for i in range(args.n): proc = subprocess.Popen( [args.binary, 'multiprocessing_hangs.py'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, ) try: proc.wait(timeout=30) print("{} ok".format(i)) except subprocess.TimeoutExpired: proc.kill() print("{} fail".format(i)) errors += 1 print("Ran multiprocessing_hangs.py {} times, failed {} times or {} %".format(args.n, errors, 100*errors//args.n))