ctypes 객체를 C++과 파이썬 프로세스간에 공유했습니다. 파이썬 프로세스는 그 객체로부터 입력 값을 받아 Tensorflow를 통해 실행하고, numpy 배열을 출력으로 남겨 둡니다. 이 배열은 상당히 커서 텍트로 플로우 출력에서 공유 된 ctypes 객체로 데이터를 복사하는 더 좋은 방법이 있는지 궁금합니다. 그래서 C++ 프로세스가 데이터를 처리 할 수 있습니다. (속도는 예,이 문제입니다.) 지금 내가 한 각 값을 복사하고있어데이터를 numpy에서 ctypes로 빠르게 복사
: 데이터가하는 ctypes가 메모리에 공유 객체입니다
output = np.array([12, 13, 11, 10]) # in reality this is fairly large (the Tensorflow result)
for i, value in enumerate(output):
data.pressure[i] = ctypes.c_double(value)
. (this example 이후 구조)
한편, ctypes 개체에서 numpy로 데이터를 복사하는 것은 쉽습니다. 반대쪽 (ctypes 배열에 numpy에서)하는 것이 있는지 궁금합니다. 쉬운 코드입니다. :
# Creating a numpy array from the ctypes array
input = np.reshape(data.velocity, (1, 29791))
# Tensorflow returns a numpy array
output = sess.run(final, feed_dict={Input: input})
# Now how do I get the data from output into data.pressure?
편집 : 참고로, 이는하는 ctypes 모양 (파이썬 측)
class TransferData(ctypes.Structure):
_fields_ = [
('statusReady', ctypes.c_bool),
# ...
('velocity', ctypes.c_double * (31 * 31 * 31)),
('pressure', ctypes.c_double * (31 * 31 * 31))
]
'데이터'정의를 표시 할 수 있습니까? –
확실한 것은 게시에 추가되었습니다. –