python - 具有导入函数的 Python 多处理池
问题描述
使用 windows 和 python 3.6 导入要映射的函数后,我遇到了多处理问题。此代码有效(给出输出 [2, 12, 30, 56, 90]):
from multiprocessing import Pool
def f(x,y):
return x*y
if __name__ == '__main__':
args=[(1,2),(3,4),(5,6),(7,8),(9,10)]
with Pool(4) as p:
result=p.starmap(f,args)
print(result)
现在我将函数 f 移动到另一个名为“test”的 .py 文件中,然后将其导入:
from multiprocessing import Pool
from test import f
if __name__ == '__main__':
args=[(1,2),(3,4),(5,6),(7,8),(9,10)]
with Pool(4) as p:
result=p.starmap(f,args)
print(result)
test.py 仅包含:
def f(x,y):
return x*y
运行它会导致无限循环(不返回任何 CPU 使用率高的东西)。
是什么原因造成的,有没有办法解决它?通过将所有代码复制到一个巨大的 .py 中,我成功地让多处理程序在程序上工作,这显然并不理想。
解决方案
推荐阅读
- redis - redisearch FT.SEARCH 的搜索复杂度?
- python - Python 3.8 下 mpmath 有问题,但在 2.7 下可以
- javascript - 如何在Javascript中的for循环中创建元素
- java - 如何使用 Boyer Moore 算法找到最合适的出现?
- php - 警告:使用未定义的常量 HTTP_USER_AGENT - 在第 1 行
- google-cloud-platform - 如何从外部的 kubernetes 集群中为现有的负载均衡器和其他服务公开一个微服务 - 仅在集群内
- php - 如何在不使用数组的循环中删除重复值
- java - 动态队列和侦听器,消息未发送?
- javascript - 为什么我的总金额没有出现在我的 editableTableWidget 插件中
- python-3.x - 在 Tensorflow 中训练权重矩阵中的参数