我正在try 使用来自多处理的队列.队列模块.
q = Queue()
作为实例化的示例.如果我try 此操作,会出现以下错误:
TypeError: __init__() missing 1 required keyword-only argument: 'ctx'
通过谷歌搜索这个问题,我们发现:
http://bugs.python.org/issue21367
我怎么知道这是否已修复?不可能使用多处理吗.现在排队吗?
我正在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
,它必须知道正确的上下文才能正常工作.