日々精進

新しく学んだことを書き留めていきます

multiprocessing.Poolは各ProcessにGlobal変数をコピーする

マルチプロセスなので当たり前なんだけど、Pythonのmultiprocessing.Poolを使って複数プロセスで並列処理をする時にGlobal変数はそれぞれのプロセスにコピーされる。

なので、以下の例だとmy_funcの中でGlobal変数を変更しても他のプロセスには影響しない。

    pool = ProcessingPool(nodes=nodes)
    pool.map(lambda x: my_func(x[0], x[1]), candidates)

参考:

stackoverflow.com