使用 starmap() 创建对象 + 调用函数的多重处理 Python
Multiprocessing for creating objects + calling functions using starmap() Python
我想创建 class Training
的对象并创建多个调用 print()
函数的进程。
我有一个 class 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)
我想创建 class Training
的对象并创建多个调用 print()
函数的进程。
我有一个 class 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)