python-3.x - 使用 multiprocessing.Pool 进行多处理
问题描述
即使是使用 mutiprocessing.Tool 方法的最基本任务,我也遇到了问题。它似乎正在工作,但从未完成最简单的任务。你能帮我做错什么吗?我读了一些文章,试图理解它,但可以弄清楚。我添加了一个简短的示例(使用列表(地图(平方,范围(2_000_000))),它有效,但不是下面的。)提前致谢,
罗兰
"""
from multiprocessing import Pool
import time
process_pool = Pool(processes = 4)
def squared(n):
return n ** 2
start = time.perf_counter()
process_pool.apply(squared, range(2_000_000))
end = time.perf_counter() - start
print(f"Run time: {end}")
"""
解决方案
我认为您想要imap()
(并squared()
在定义池之前移动):
from multiprocessing import Pool
import time
def squared(n):
return n ** 2
process_pool = Pool(processes = 4)
start = time.perf_counter()
process_pool.imap(squared, range(2))
end = time.perf_counter() - start
print(f"Run time: {end}")
请记住,这不是一个非常具有代表性的示例,因为您不会对结果做任何事情;更好的事情是
with Pool(4) as pool:
results = pool.imap(squared, range(2_000_000))
for result in results:
pass # do something here with the result
推荐阅读
- ios - Swift Realm - “'Results' 类型的值没有成员”
- haskell - 递归运行单个 State monadic 动作
- python - 如何在输出中返回除特定内容之外的所有内容
- arrays - 使用 react-google-charts 传递数组时,n.getFullYear 不是函数错误
- java - 为什么我的按钮冻结并且无法识别任何点击?
- screenshot - 范围报告版本 4 屏幕截图未生成
- excel - 无需命令按钮VBA即可自动运行
- github - Github 分支名称的最大长度是多少
- google-apps-script - 用于工作表的 Google Add-on 无效范围
- php - jQuery CSS在值更改时更改表格颜色