3
두 프로세스간에 공유 메모리에 다차원 배열이 있어야합니다. 나는 작동하는 간단한 예제를 만들려고한다 : 나는 [1, 2, 3, 4, 5, 6, 7, 8, 9]
을 다른 프로세스에 보내고, 추가 메모리를 사용하지 않고 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
으로 바꾼다.공유 메모리 (다중 처리)에서 배열 버퍼에서 numpy 배열을 만들지 못함
import multiprocessing
import ctypes
import numpy
def f(array):
nmp = numpy.frombuffer(array.get_obj(), dtype=int)
b = nmp.reshape((3, 3))
if __name__ == '__main__':
time_array = []
import common_lib
common_lib.time_usage(time_array)
arr = multiprocessing.Array(ctypes.c_int, [1,2,3,4,5,6,7,8,9])
p = multiprocessing.Process(target=f, args=(arr,))
p.start()
p.join()
나는 설명서에서와 똑같이했다. 그러나 기능 frombuffer
이 오류를 범 :
ValueError: buffer size must be a multiple of element size
완벽하게 작동했습니다! 고마워요! 나는 64 비트 머신을 가지고있다. 경우에 따라 float 또는 double을 사용하면 어떤 유형이어야합니까? – soshial
@soshial 단 정밀도 float은''float32 ''또는'np.float32'이고 배정 밀도 float은''float64''또는'np.float64'입니다. – ebarr