【发布时间】:2016-03-17 11:52:35
【问题描述】:
我有一个多处理脚本,我在 linux 和 windows 中都试过了
在 linux 中它工作正常,但在 windows 中,脚本正在运行一些随机的未知结果,脚本甚至没有结束
脚本
from multiprocessing.pool import Pool
def get_urls1():
res = [1,2,3,4,5]
nprocs = 20 # nprocs is the number of processes to run
ParsePool = Pool(nprocs)
#ParsePool.map(btl_test,url)
ParsedURLS = ParsePool.map(extractData,res)
def extractData(r):
print r
get_urls1()
Linux 输出
1
3
2
5
4
但是当我在 Windows 中运行相同的脚本时,它并没有给出与 linux 一样的确切结果,并且脚本甚至没有结束(但是如果我删除了多处理,脚本可以工作)
我应该如何解决才能使多处理工作?
【问题讨论】:
-
你应该在
maping 之后在池上调用.close().terminate(),以确保工人在完成工作后会结束,但 falsetru 的回答是主要问题。
标签: python linux windows multiprocessing