为啥我收到一个错误,显示模块“多处理”没有属性“sharedctypes”?

Posted

技术标签:

【中文标题】为啥我收到一个错误,显示模块“多处理”没有属性“sharedctypes”?【英文标题】:Why do I get an error that reads module 'multiprocessing' has no attribute 'sharedctypes'?为什么我收到一个错误,显示模块“多处理”没有属性“sharedctypes”? 【发布时间】:2021-03-17 15:13:50 【问题描述】:

我有一个使用多处理的 Python 程序。

在某个时候,我会这样做:

import multiprocessing
import ctypes

...

# data is an ndarray
sm_data = multiprocessing.sharedctypes.RawArray(ctypes.c_double, data.flatten())

...将数据ndarray复制到共享内存中。

令我惊讶的是,它失败了:

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

【讨论】:

啊哈.. 非常感谢,工作就像一个魅力!

以上是关于为啥我收到一个错误,显示模块“多处理”没有属性“sharedctypes”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到错误:AttributeError:'builtin_function_or_method'对象没有属性'isdigit'

Python多处理错误:AttributeError:模块'__main__'没有属性'__spec__'

我收到属性错误:“模块”对象在运行 python 代码时没有属性“enableTrace”

为啥我会收到此错误:未捕获的类型错误:无法读取 null 的属性 'classList'

为啥会收到此错误“模块 * 已定义”?

为啥在检查 null 的长度时我没有收到错误 [重复]