import sys # Monkey patch os.spawnve on windows to become thread safe if sys.platform == 'win32': import os import threading from os import spawnve as old_spawnve spawn_lock = threading.Lock() def new_spawnve(mode, file, args, env): spawn_lock.acquire() try: if mode == os.P_WAIT: ret = old_spawnve(os.P_NOWAIT, file, args, env) else: ret = old_spawnve(mode, file, args, env) finally: spawn_lock.release() if mode == os.P_WAIT: pid, status = os.waitpid(ret, 0) ret = status >> 8 return ret os.spawnve = new_spawnve