python - Python多处理 - 仅返回部分值而不是整个值
问题描述
我目前正在构建我的第一个多处理应用程序。
但是..它不起作用。我试图删除所有代码以使其变得简单,但我不明白。这是代码:
itemList = ["Item1", "Item2", "Item3", "Item4", "Item5" ]
def printList(list):
for item in list:
print(item)
if __name__ == '__main__':
#Single-Processing
printList(itemList)
#Multi-Processing
pool = multiprocessing.Pool()
pool.map(printList, itemList)
这就是输出应该如何(当我不使用多处理运行它时):
Item1
Item2
Item3
Item4
Item5
多处理的输出:
I
t
e
m
1...
为什么会发生这种情况,我该如何避免这种情况?
解决方案
您未能正确分配迭代列表的责任。您正在调用pool.map
,它遍历您的列表并调用printList
每个元素,但printList
希望接收整个列表并遍历列表本身。
这些循环之一必须去。你可以在里面停止迭代printList
:
pool.map(print, itemList)
或者您可以停止使用map
:
pool.apply(printList, itemList)
推荐阅读
- json - 在 Asp.net MVC 中使用图表 JS
- matlab - 如何从代码创建的按钮调用另一个按钮的回调
- android - 如何检查我是在 ionic 3 的地理围栏区域进入还是退出
- vue.js - 如何使用 Mocha 和 Chai 测试 Vuex 模块
- php - 如何正确设置虚拟主机
- java - 创建 HttpsSession 时如何更改 DefaultSessionTrackingModes
- azure-devops - 如何在 Azure Pipelines YAML 构建定义中接收修订
- vb.net - WebBrowser 在后续使用中失败?WebBrowser1_DocumentCompleted 不起作用
- c++ - 如何以低于相机每秒帧数的能力处理数据?
- node.js - 节点集群分叉执行代码过于频繁