私はプールで非同期にnumpyのファイルをロードしようとしています:Pythonのマルチプロセッシングapply_async "0>左の主張" AssertionErrorが
self.pool = Pool(2, maxtasksperchild = 1)
...
nextPackage = self.pool.apply_async(loadPackages, (...))
for fi in np.arange(len(files)):
packages = nextPackage.get(timeout=30)
# preload the next package asynchronously. It will be available
# by the time it is required.
nextPackage = self.pool.apply_async(loadPackages, (...))
方法 "loadPackages":でも最初の前
def loadPackages(... (2 strings & 2 ints) ...):
print("This isn't printed!')
packages = {
"TRUE": np.load(gzip.GzipFile(path1, "r")),
"FALSE": np.load(gzip.GzipFile(path2, "r"))
}
return packages
」パッケージ "がロードされると、次のエラーが発生します。
スレッド8の例外:トレースバック(最新の呼び出し最後):
ファイル「C:\ Users \ roman \ Anaconda3 \ envs \ tsc1 \ lib \ threading.py」914行、 (* self._args、** self._kwargs)ファイル "C:\ Users \ roman \ Anaconda3 \ envs \ tsc1 \ lib \ multiprocessing \ pool"を入力してください。 「ファイル:C:\ Users \ roman \ Anaconda3 \ envs \ tsc1 \ lib \ multiprocessing \ connection.py」、 行250、recv buf = self .recv_bytes()ファイル "C:¥Users¥roman¥Anaconda3¥envs¥tsc1¥lib¥multiprocessing¥connection.py"、 行318、_recv_bytes内 return self._get_more_data(ov、maxsize)ファイル "C:\ Users \ roman \ Anaconda3 \ envs \ ts C1 \ libに\ \ connection.py」、 ライン337、> 0 AssertionErrorが
左_get_more_data アサートに、私は密接にリソースを監視マルチプロセッシング:エラーが発生したときにメモリが問題ではありませんが、私はまだたくさん残っています。 解凍されたファイルは単なる多次元numpy配列です。 個別に、より簡単な方法でプールを使用し、そのようにファイルを読み込みます。それだけが失敗する。 (これはカスタムケラスジェネレータで起こりますが、私はこれが助けになるとは思っていませんが、誰が知っているのでしょうか?)Python 3.5。
この問題の原因は何ですか?このエラーはどのように解釈できますか?
ありがとうございました!
私は同じ問題を抱えています。また、十分なRAMが残っています。問題の解決策を見つけましたか? –