Почему я получаю сообщение об ошибке, гласящее, что модуль ‘multiprocessing’ не имеет атрибута ‘sharedctypes’?

#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. аааа .. большое спасибо, сработало как шарм!