情况
python3.5在用进程池的时候使用了with
def f(x):
time.sleep(1)
return x*x
if __name__ == '__main__':
process = []
pool = Pool(processes=4)
with pool:
for j in range(8*4):
result = pool.apply_async(f, (j,))
process.append(result)
# pool.close()
pool.join()
for i in process:
print(i.get())
解决方法
把with换成手动close就行
join()¶
等待工作进程结束。调用 join() 前必须先调用 close() 或者 terminate() 。
for j in range(8*4):
result = pool.apply_async(f, (j,))
process.append(result)
pool.close()
pool.join()
删除sleep、get()方法放到里边
def f(x):
return x*x
if __name__ == '__main__':
process = []
with Pool(processes=4) as pool:
for j in range(8):
result = pool.apply_async(f, (j,))
process.append(result.get())
pool.join()
for i in process:
print(i)