我在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))