簡體   English   中英

multiprocessing.Array(python):預期為float而不是numpy.ndarray實例

[英]multiprocessing.Array (python): float expected instead of numpy.ndarray instance

我已經遵循了有關多處理的在線手冊。 我想我已經給它一個數組mp.Array。 為什么會期望使用float而不是array?

我的劇本-

import multiprocessing as mp
import numpy as np

pdb_num = 1000

fitting_theta = mp.Array('d', np.zeros((pdb_num,pdb_num)))
fitting_deviation = mp.Array('d', np.zeros((pdb_num,pdb_num)))

它給出了一個錯誤-

float expected instead of numpy.ndarray instance

謝謝。

編輯:

完整的追溯-

  File "/lustre/beagle2/danielhskerr/python/min_sq_fitnewres.py", line 70, in <module>
fitting_theta = mp.Array('d', np.zeros((pdb_num,pdb_num)))
  File "/soft/python/2.7/2.7.1/lib/python2.7/multiprocessing/__init__.py", line 256, in Array
return Array(typecode_or_type, size_or_initializer, **kwds)
  File "/soft/python/2.7/2.7.1/lib/python2.7/multiprocessing/sharedctypes.py", line 87, in Array
  obj = RawArray(typecode_or_type, size_or_initializer)
  File "/soft/python/2.7/2.7.1/lib/python2.7/multiprocessing/sharedctypes.py", line 61, in RawArray
result.__init__(*size_or_initializer)
TypeError:  float expected instead of numpy.ndarray instance

請仔細閱讀文檔以進行多處理: https : //docs.python.org/2/library/multiprocessing.html#multiprocessing.Array

進程之間可用於編組的類型非常有限,因此您不能為它們使用任意對象/類型(例如numpy-array)。

這可能是您的問題的答案

在共享內存中使用numpy數組進行多處理

但是,鎖定訪問的要求可能會不適當地影響性能。 使用帶有浮點數的普通數組來生成進程,然后從它們中構建numpy-arrays。 但是,如果其中一種解決方案適合您的問題,則取決於該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM