python - 用于创建对象的多处理 + 使用 starmap() Python 调用函数
问题描述
我想创建类对象Training
并创建多个调用该print()
函数的进程。
我有一堂课Training
:
class Training():
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
def print(self):
print(self.param1)
print(self.param2)
我尝试使用该starmap
函数通过以下方式创建 5 个进程:
import multiprocessing as mp
num_devices = 5
func_args = []
for i in range (0, num_devices):
func_args.append((i, i*10))
with mp.Pool(num_devices) as pool:
obj = pool.starmap(Training, func_args, chunksize=1)
obj[0].print()
obj[1].print()
obj[2].print()
obj[3].print()
obj[4].print()
但是,此代码正在创建多个进程来创建对象,而不是运行该print()
函数。我怎样才能以正确的方式做到这一点?
解决方案
创建一个使用所需参数初始化的对象列表,以及一个调用对象方法的辅助函数:
def helper_func(obj):
obj.print()
func_args = []
for i in range (0, num_devices):
obj = Training(i, i*10)
func_args.append(obj)
with mp.Pool(num_devices) as pool:
pool.map(helper_func, func_args, chunksize=1)
推荐阅读
- python - 如何在 Windows 10 上为 python 3.7 使用 anaconda 包?
- azure - 如何使用我的 Azure 免费帐户在 Graph Explorer 中列出所有应用程序?
- logstash - Logstash:控制台上没有显示任何内容(Mac)
- winforms - 项目打开的问题
- apache - 代理 Apache FastCGI
- c# - 在 Datagrid 中禁用标题上下文菜单
- r - 如何在不使用 for 循环的情况下在 R 中实现动态计数?
- java - 在多线程环境中使用 HashSet 作为一个非常简单的缓存是否安全?
- python - 使用 Paramiko 运行数据库脚本失败并出现退出代码
- php - 获取具有不同结构开头的两种类型的 json 文件