multiprocessing モジュールを使用して numpy 配列の操作に取り組んでおり、ここで実行したコードのいくつかを試しているときに問題が発生しています。具体的には、numpy 配列から ctypes 配列を作成し、ctypes 配列を numpy 配列に戻そうとしています。コードは次のとおりです。
shared_arr = multiprocessing.RawArray(_numpy_to_ctypes[array.dtype.type],array.size)
同期ロックは一切必要ないので、RawArray を使用しています。ctypes データ型は、入力配列の dtype に基づいて辞書から取得されます。それは素晴らしく働いています。
shared_arr = numpy.ctypeslib.as_array(shared_arr.get_obj())
ここで、次のようなスタック トレースを取得します。
AttributeError: 'c_double_Array_16154769' object has no attribute 'get_obj'
この投稿から次のことも試しましたが、同じエラーが発生します。
def tonumpyarray(shared_arr):
return numpy.frombuffer(shared_arr.get_obj())
私はpython 2.6の実行に行き詰まっており、それが問題であるかどうか、変数名の共有に問題があるかどうかはわかりません(メモリ使用量をできるだけ低く抑えようとしており、numpy配列とctypesを複製しないようにしていますメモリ内の配列)、またはPythonのこのコンポーネントについて学んでいるので、何か他のもの。
提案?