如何使用pool.starmap在某些进程上重复带有一些参数的函数



我在python中使用了多处理来重复一个函数1000次,并在某些内核上输入一个数字,我使用了代码:

def GradientProccess(m):
x=random.seed(os.getpid()*m)
print(random.seed(os.getpid()*m))
.
.
.
return()
if __name__ == '__main__':         
__spec__ = "ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>)"       
with Pool(processes=8) as pool:
result=pool.map(GradientProccess,range(1000))

但是现在我将使用多处理来重复函数,并将 2 个列表作为函数的输入。我想使用starmap但是我怎样才能重复1000次?我写了这段代码,但它不正确:

def GradientProccess(m,list1,list2):
x=random.seed(os.getpid()*m)
print(random.seed(os.getpid()*m))
.
.
.
return()
if __name__ == '__main__':         
__spec__ = "ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>)"       
list1=[4,3]
list2=[5,7]
with Pool(processes=8) as pool:
result=pool.starmap(GradientProccess,[list1,list2],range(1000))

如何使用星图重复一个以 2 个固定列表作为参数的函数? 还有其他方法可以做到这一点吗?

由于该函数完全使用两个列表(而不是每个列表中的元素组合(,因此不需要使用starmap。 相反,您可以创建一个分部函数并将其与map一起使用,如下所示。

def gradiant_process(m, l1, l2):
...
with Pool(processes=8) as pool:
...
import functools
partial_gp = functools.partial(gradient_process, l1=list1, l2=list2)
result = pool.map(partial_gp, range(1000))

相关内容

  • 没有找到相关文章