我在Linux上使用python 3.6,我使用的是python的多处理库,它一直在工作,直到我切换到Windows 10。首先,我认为这是因为多处理库在Linux和Windows上的工作方式不同,所以我确保我的所有变量都是可拾取的,但没有结果。
然后,我想看看多进程池是否正常工作,我尝试了以下代码:(多进程文档中的基本示例)
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [1, 2, 3]))
它不工作,当我在任务管理器中检查处理器时,只使用了1%。
我也尝试了p.map_async
,它工作了,但当我尝试获取结果(p.map_async().get()
)时,它不工作(RuntimeError)
发布于 2018-08-09 02:32:10
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
p = Pool(5)
results = p.imap(f,range(300))
for item in results:
print(item)
p.close()
这将打印按顺序返回的项目。如果打印(p.imap(f,range(300),它将返回数据的内存位置。如果您说p= Pool(),它将启动您的CPU可以处理的最大进程数。
https://stackoverflow.com/questions/48660656
复制相似问题