我正在try 使用来自多处理的队列.队列模块.

q = Queue()

作为实例化的示例.如果我try 此操作,会出现以下错误:

TypeError: __init__() missing 1 required keyword-only argument: 'ctx'

通过谷歌搜索这个问题,我们发现:

http://bugs.python.org/issue21367

我怎么知道这是否已修复?不可能使用多处理吗.现在排队吗?

推荐答案

听起来你不是直接从multiprocessing输入Queue.当引入上下文时,从multiprocessing顶级包导入的大多数对象都变成了函数,这些函数在内部获取上下文,然后将其传递给基础类初始值设定项,而不是类本身.例如,下面是multiprocessing.Queue现在的情况:

def Queue(self, maxsize=0):
    '''Returns a queue object'''
    from .queues import Queue
    return Queue(maxsize, ctx=self.get_context())

如果直接导入multiprocessing.queues.Queue并try 实例化它,您将看到错误.但是如果你直接从multiprocessing导入,它应该可以正常工作.

context对象告诉multiprocessing available methods for starting sub-processes中的哪一个正在使用.multiprocessing.Queue在内部使用multiprocessing.Lock,它必须知道正确的上下文才能正常工作.

Python-3.x相关问答推荐

Python gpsd客户端

被多个\n拆分并保留

以编程方式关闭jupyterlab内核

ValueError at /register/ 视图authenticate.views.register_user 未返回HttpResponse 对象.它返回 None 相反

pytorch 中 mps 设备的 manual_seed

如果值超出上下限(异常值处理),则将值的数据框替换为 np.nan

为什么 numpy 的 `np.char.encode` 会将一个空的 unicode 数组变成一个空的 `float64` 数组?

Semaphore信号量 Python 的工作原理

在 jupyter notebook 的单元格中使用 sudo

活动屏幕上的 PyQt4 中心窗口

Python:pprint的模块错误,打印没有错误

Tkinter 窗口显示(无响应)但代码正在运行

TensorFlow:dataset.train.next_batch 是如何定义的?

如何配置 Atom 以运行 Python3 脚本?

将行附加到 DataFrame 的最快和最有效的方法是什么?

在 WSL (Ubuntu) 中为 python3 安装 venv

如何避免使用我的 python 包构建 C 库?

在 Ipython 中使用 Pylint (Jupyter-Notebook)

有效地判断一个元素是否在列表中至少出现 n 次

print(... sep='', '\t' ) 是什么意思?