Voglio sottoclasse multiprocessing.Queue per l'implementazione dei processi per l'acquisizione di blocchi della coda. L'unico problema è che sto ottenendo uno strano errore TypeError?Problema di sottoclasse della coda di multiprocessing
#!/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)]
prove (ho diviso questo in modo che io non stavo tirando in qualsiasi altra cosa)
| => ./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
Edit/Update:
come si sta inizializzando la coda? – eugecm
Non lo sono. Quello che vedi è l'intero test. In realtà non sto chiamando o usando in alcun modo. – SkyLeach
Penso che questo debba avere a che fare con il modo in cui il multiprocessing.Queue gestisce le risorse locali/condivise? chiamare la specifica della classe durante il caricamento JIT come TypeDef significa che qualcosa nel core sta diventando mazed su AFAICT – SkyLeach