找到这张PyInstaller票证后回答我自己的问题:
显然,我们要做的就是提供一个
Process(和
_Popen)类,如下所示,并使用它代替
multiprocessing.Process。我已经纠正并简化了该类,使其仅可在Windows上使用,*
ix系统可能需要不同的代码。
为了完整起见,以下是上述问题的改编样本:
import multiprocessingfrom Queue import Emptyclass _Popen(multiprocessing.forking.Popen): def __init__(self, *args, **kw): if hasattr(sys, 'frozen'): os.putenv('_MEIPASS2', sys._MEIPASS) try: super(_Popen, self).__init__(*args, **kw) finally: if hasattr(sys, 'frozen'): os.unsetenv('_MEIPASS2')class Process(multiprocessing.Process): _Popen = _Popendef _start(): while True: try: command = queue.get_nowait() # ... and some more pre to actually interpret commands except Empty: time.sleep(0.015)def start(): process = Process(target=_start, args=args) process.start() return process
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)