

並列処理をさせたくて公式ドキュメントを参考しようとしたところ、multiprocessingの序盤の例文で実行されず、行き詰まっています。  
実行環境  
OS:Windows10  
CPU:corei-5-3337U  
コア:2  
プロセッサ:4  
Python:3.7

[code]

    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]))
    
[/code]

デバックをしながら確認するとp.map()で停止してそのまま応答がありません。  
同ページでWindowsはfreeze_support()を入れる必要性を解説しており、`__name__==
'__main__'`直後に入れましたが、動作しませんでした。

[code]

    from multiprocessing import Process
    
    def f(name):
        print('hello', name)
    
    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
    
[/code]

は実行されました。

実際にやりたいことは1例目のようにリストを渡して並列で処理させたいです。  
Windowsで並列処理させるためにはどのようにすればいいのでしょか  
よろしくお願いします。


CC BY-SA 4.0
2019-06-17T14:54:47.467
55885
2020-05-17T19:48:42.123
2020-05-17T19:48:42.123
19110
28931
question
python python-multiprocessing
Pythonのmultiprocessing.poolが実行されない