gpt4 book ai didi

python-3.x - 多处理队列子类问题

转载 作者:行者123 更新时间:2023-12-04 03:36:46 30 4
gpt4 key购买 nike

我想将 multiprocessing.Queue 子类化以实现进程以获取队列的块。唯一的问题是,我收到了一个奇怪的 TypeError?

#!/usr/bin/env python

#whaaaaa!?

from multiprocessing import Queue

class BufferQueue(Queue):
'''A thread/process safe queue for append/popleft operations with the import
buffer.'''

def __init__(self, **kwargs):
super(BufferQueue,self).__init__(**kwargs)

def consume(self, lim):
'''Consume up to but no more than lim elements and return them in a new
list, cleaning up the buffer.

@params
lim -- the maximum (limit) to consume from the list. If less items
exist in the list then that's fine too.
'''
lim = len(queue) if len(queue) < lim else lim
return [self.popleft() for i in range(lim)]

测试这个(我把它分开,这样我就不会再拉其他东西了)
| => ./tests/wtf_queue.py 
Traceback (most recent call last):
File "./tests/wtf_queue.py", line 10, in <module>
class BufferQueue(Queue):
TypeError: method expected 2 arguments, got 3

编辑/更新:

最佳答案

multiprocessing.Queue是一种创建队列的方法,因此您应该将其用作函数 my_queue = Queue() .

>>> from multiprocessing import Queue
>>> type(Queue)
<class 'method'>

正如您所看到的,它不是用于子类化的“类型”。

如果你想实现自己的队列,你可以看看 queue.Queue

编辑:

如果要从多处理中子类化队列,请使用 multiprocessing.queues.Queue相反,它是 multiprocessing.Queue() 返回的对象的类型

关于python-3.x - 多处理队列子类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292296/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com