2

私は流れるスキームを持っています:

1 つのデータ処理プロセス - The_process いくつかのデータ生成プロセス - ワーカー

私がする必要があるのは、リスト foo_list を共有することです。これには、他の 2 つの大きなオブジェクト list1、dict2、

foo_list = [list1, dict2]

それらのプロセスの間。ワーカーは foo_list からのみ読み取る必要がありますが、一致する対応する list1 と dict2 が必要です。The_process はこれらのデータを変更できる必要があります。

編集: foo_list のバージョンを更新するには、ワーカーが必要です。The_process はたまに foo_list を更新するので、できるだけ早くその更新されたバージョンを使い始める必要があります。

マルチプロセッシング ライブラリの manager.list を使用しましたが、プロファイリングでは、プログラム時間の約 25% がかかり、ワーカーによってリストからデータを取得するだけであることが示されました。

それで問題は、それを行う方法は他にありますか?または私はそれを間違っていますか?

4

1 に答える 1

2

ほとんどの場合、共有メモリは適していません。このリストのコピーを作成し、そのコピーfoo_listを各プロセスに渡して、プロセス間でリストを管理する時間が無駄にならないようにすることをお勧めします (メモリがある場合)。

私自身、共有メモリを使用しようとしたときに同様の問題が発生しました-> Pythonマルチプロセッシングパフォーマンス

于 2013-07-02T09:02:04.327 に答える