Pythonのmultiprocessing.poolが実行されない
並列処理をさせたくて公式ドキュメントを参考しようとしたところ、multiprocessingの序盤の例文で実行されず、行き詰まっています。
実行環境
OS:Windows10
CPU:corei-5-3337U
コア:2
プロセッサ:4
Python:3.7
from multiprocessing import Pool,freeze_support
def f(x):
return x*x
if __name__ == '__main__':
freeze_support()
with Pool(4) as p:
print(p.map(f, [1, 2, 3]))
デバックをしながら確認するとp.map()で停止してそのまま応答がありません。
同ページでWindowsはfreeze_support()を入れる必要性を解説しており、__name__== '__main__'
直後に入れましたが、動作しませんでした。
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
は実行されました。
実際にやりたいことは1例目のようにリストを渡して並列で処理させたいです。
Windowsで並列処理させるためにはどのようにすればいいのでしょか
よろしくお願いします。