#python #multiprocessing #python-multiprocessing #shared-memory
#python #многопроцессорная обработка #python-многопроцессорная обработка #разделяемая память
Вопрос:
У меня есть программа на Python, которая использует многопроцессорную обработку.
В определенный момент я делаю:
import multiprocessing
import ctypes
...
# data is an ndarray
sm_data = multiprocessing.sharedctypes.RawArray(ctypes.c_double, data.flatten())
…чтобы скопировать массив данных в общую память.
К моему удивлению, он терпит неудачу с:
Exception in thread Thread-2:
Traceback (most recent call last):
File "/home/stark/anaconda3/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/home/stark/anaconda3/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/home/stark/Work/mmr/GpuVm_CUDA.py", line 266, in run_simulation
sm_data = multiprocessing.sharedctypes.RawArray(ctypes.c_double, data.flatten())
AttributeError: module 'multiprocessing' has no attribute 'sharedctypes'
Как, черт возьми, у него нет sharedctypes? В IDE, если я просто нажму ctrl на имя, я перейду к его определению по адресу sharedctypes.py .
Так ясно, что он есть, но когда я запускаю, он не может его найти?
Ответ №1:
Вам также необходимо импортировать подпакеты:
import multiprocessing
import multiprocessing.sharedctypes
import ctypes
Комментарии:
1. аааа .. большое спасибо, сработало как шарм!