Mou*_*jan 1 python linux windows multiprocessing
我有一个多处理脚本,我在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()
Run Code Online (Sandbox Code Playgroud)
Linux输出
1
3
2
5
4
Run Code Online (Sandbox Code Playgroud)
但是当我在Windows中运行相同的脚本时,它并没有给出确切的结果,因为linux和脚本甚至没有结束(但是如果我删除多处理脚本工作)
我应该怎样修复多处理工作?
根据multiprocessing文档 - 编程指南 - Windows
安全导入主模块
确保新的Python解释器可以安全地导入主模块,而不会导致意外的副作用(例如启动新进程).
...
相反,应该通过使用
if __name__ == '__main__':如下来保护程序的"入口点" :...
所以,守护get_urls1()调用if __name__ == '__main__':
if __name__ == '__main__':
get_urls1()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
948 次 |
| 最近记录: |