一部のコアで入力として1つの数値を使用して関数を1000回繰り返すために、Pythonでマルチプロセッシングを使用し、次のコードを使用しました。
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))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加