【发布时间】:2019-04-27 05:22:06
【问题描述】:
我有以下代码,它为 4 个工人创建了一个池,并调用了一个工人方法。该代码在大多数情况下都可以正常工作。运行时,我看到正在调用不同的工作人员来处理工作。然而,当所有工作人员都完成时,calc_completed 永远不会在最后调用一次。这是预期的行为吗?我本来希望回调会在每个工作人员完成时发生。
def calculate_worker(x, y):
print 'working...'
...
def calc_completed(result):
print 'completed: %s'%str(result)
def calc_errored(result):
print 'error: %s'%str(result)
if __name__ == '__main__':
start, stop, step = 1, 1000, 1
ranges = [(n, min(n+step, stop)) for n in xrange(start, stop, step)]
pool = mp.Pool(processes=8)
res = pool.starmap_async(calculate_worker, ranges,
callback=calculate_worker, error_callback=calc_completed)
pool.close()
pool.join()
d = res.get()
print(d)
【问题讨论】:
标签: python python-2.7 python-multiprocessing