Problema: No puedo heredar del Queue de multiprocessing! :|
fPython 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
>>> from multiprocessing import Queue
>>> class D(Queue):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Error when calling the metaclass bases
function() argument 1 must be code, not str
queloqué?
¿Alguien se chocó con algo similar?
Gracias! Slds.
--
. Facundo
Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
_______________________________________________
pyar mailing list py...@python.org.ar
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
def Queue(maxsize=0):
'''
Returns a queue object
'''
from multiprocessing.queues import Queue
return Queue(maxsize)
Por lo que supongo, que debes heredar de multiprocessing.queues.Queue .
Alguna idea de para qué hacen esa función Queue en __init__.py en lugar de algo
como:
Queue = multiprocessing.queues.Queue
Saludos,
Diego
> No nunca me choqué con esto, pero viendo:
> /usr/lib/python2.7/multiprocessing/__init__.py está:
Claro! Había hecho un grep en multiprocessing y se me pasó esta definición :(
> Por lo que supongo, que debes heredar de multiprocessing.queues.Queue .
Exacto.
> Alguna idea de para qué hacen esa función Queue en __init__.py en lugar de algo
> como:
>
> Queue = multiprocessing.queues.Queue
No. Es raro, ¿no?
Muchas gracias!
--
. Facundo
Se que no aporta mucho, pero estoy casi seguro de haber leido algo del
autor de multiprocessing sobre heredar de las Queue. No recuerdo si
era que no era buena idea, o que no le gustaba cómo estaba
implementado. Pero no lo puedo encontrar :/
Capaz que mas acorde del disenio de Queue seria que inyectes tus
versiones decoradas:
from multiprocessing import Queue
def DeferredQueue(*p, **kw):
q = Queue(*p, **kw)
q.deferred_get = lambda *p, **kw : deferred(... q.get(*p, **kw) )
...
Es mas feo, lo concedo, pero no salteas el mecanismo de construccion
de Queues de multiprocessing.