2011-07-05 7 views
1

"Is shared readonly data copied to different processes for Python multiprocessing?"と読みましたが、記載されている配列はグローバルです。ローカル配列でも同じことが可能ですか?プロセス間で非グローバルな配列のコピーを避けるには?

+0

もしあなたがCythonを使うことができれば、ポインタでしか動作しない別のスレッド間で配列を共有することができます[ここに示すように...](http://stackoverflow.com/a/20520295/832621) –

答えて

-1

私はそうは思わないですが、あなたはモジュールの変数にものを保存することができます。フォークの前にこれを行う場合(そしてあなたが窓にない場合)、うまく動作するはずです。例:

import mymodule 

def somefunc(parameter): 
    # do something with mymodule.var 

# load/process local data 
# save to module variable 
mymodule.var = var 
# now fork 
p = multiprocessing.Pool(8) 
p.map(somefunc, list_of_params) 

あなたは(動作していないようメインに酸洗機能)を過ぎモジュールでsomefuncを配置する必要がありipythonあなたが使用している場合

+0

作業。コピー・オン・ライトは、参照カウンタをインクリメントするために、ほとんどの読み取りによって無効にされます。 – Will

+0

しかし、大きな変数の場合、参照カウンタを更新すると、参照カウンタを含むページだけがコピーされます。私は通常、上記のものがうまく動作するような大量の配列を扱っています。 – robince

関連する問題