我正在尝试使用该pathos
库来替换内置的多处理库,但是在 Windows 上使用管道或队列时遇到了困难。这是一个有代表性的例子:
from pathos.helpers import mp
#import multiprocessing as mp
def f(pipe, queue):
if sys.gettrace():
print 'Debug mode. About to crash'
else:
print 'Execute mode'
pipe.send('pipe')
queue.put('queue')
if __name__ == '__main__':
mp.freeze_support()
to_child, to_self = mp.Pipe()
queue = mp.Queue()
p = mp.Process(target=f, args=(to_child, queue))
p.start()
p.join()
pipe.send('pipe')
提高IOError: (6, 'The handle is invalid')
和queue.put('queue')
提高WindowsError: [Error 5] Access is denied
。两者都可以使用 vanilla 多处理模块正常工作。
难道我做错了什么?
编辑:此崩溃仅在我尝试调试子进程时发生(我使用WingIDE)。sys.gettrace()
如上所述,我可以通过检查来准确预测崩溃。