我试图端口一些代码在Python 3.6到Python 3.7在Windows 10,我打电话时看到的多处理代码挂.get()在上AsyncResult对象。有问题的代码要复杂得多,但我已将其归结为类似于以下程序的内容。
import multiprocessing
def main(num_jobs):
num_processes = max(multiprocessing.cpu_count() - 1, 1)
pool = multiprocessing.Pool(num_processes)
func_args = []
results = []
try:
for num in range(num_jobs):
args = (1, 2, 3)
func_args.append(args)
results.append(pool.apply_async(print, args))
for result, args in zip(results, func_args):
print('waiting on', args)
result.get()
finally:
pool.terminate()
pool.join()
if __name__ == '__main__':
main(5)
此代码也在 Python 2.7 中运行。出于某种原因,第一次调用get()挂起在 3.7 中,但在其他版本上一切正常。
米琪卡哇伊
相关分类