我想子類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
編輯/更新:
你如何初始化隊列? – eugecm
我不是。你看到的是整個測試。我實際上並沒有以任何方式打電話或使用它。 – SkyLeach
我在想這與multiprocessing.Queue處理本地/共享資源的方式有關。在JIT加載過程中將類規範稱爲TypeDef意味着核心中的某些內容正在變得越來越大AFAICT – SkyLeach