0

メモリには 100 個の大きな Python オブジェクトがあり (各オブジェクトは、辞書、Python 標準値 (整数など)、NumPy オブジェクト、Python クラスの組み合わせです)、それらのほとんどを「コンテンツごと」(「値ごと」) にコピーする必要があります。 )。

アドバイスしてください、どうすれば並行して、または少なくともより速くそれを行うことができますか?

すでに検討したいくつかの方法があります (私たちが理解している限りでは、おそらく間違っている可能性があります)。

  1. コピーはPythonネイティブ関数で行われており、GILがボトルネックであるため、threadingモジュールは機能しません。

  2. multiprocessing モジュールと Parallel Python は機能しません。これは、引数をピクルするためです。この場合のピクルは、コピーよりも優れていません (また、このピクルは並列に実行できません)。

  3. PyPy は、少なくとも小さな改善 (必須ではありません) をもたらす可能性がありますが、NumPy オブジェクトを使用しているため、使用できないようです。

前もって感謝します!


この 10 日間、可能な解決策を探してきましたが、何も見つかりませんでした。CPython GIL はどこでも乗り越えられない障害です。最も簡単な解決策は、Python ネイティブの配列と辞書を使用する代わりに、numpy オブジェクト (配列) に切り替えることです。これにより、Python スレッドを使用しても (少なくとも少しは) 並列にコピーできるようになります。

4

0 に答える 0