4

私はPythonでマルチプロセッシングプログラムを実装しています.サブプロセスごとに、それらはすべてファイルの一部を読み取る必要があります.

ディスクからファイルを読み込むとコストがかかるので、一度だけ読み込んで共有メモリに入れたい。

1. mmap を使用すると、フォークで動作しますが、マルチプロセッシング モジュールのプロセス間で mmaped ファイルを共有する方法が見つかりません。

2. ファイルを str に読み込み、その文字列を sharedctypes.RawArray('c', str) に格納すると、str に \0 があるとエラーが発生する可能性があり、生成される RawArray は切り捨てられます。ファイル。

何か案が?

4

1 に答える 1

0

マルチプロセッシング マネージャーを使用できますか? mmped ファイルを、Namespace()関数によって返される NameSpace オブジェクトの属性にし、この参照を各プロセスに渡します。

from multiprocessing import Manager

mgr = Manager()
ns = mgr.Namespace()
ns.df = my_dataframe

# now just give your processes access to ns, i.e. most simply
# p = Process(target=worker, args=(ns, work_unit))

(私の答えは基本的にここからコピーされます)

于 2017-08-11T12:49:09.680 に答える