tengo unaAttributeError: objeto '_MainProcess' no tiene atributo '_exiting'
AttributeError: '_MainProcess' object has no attribute '_exiting'
desde una aplicación Python. Lamentablemente, este código tiene que ejecutar Python 2.5 y, por lo tanto, el módulo processing
hoy en día conocido como multiprocessing
. Lo que estaba haciendo es crear un Process
con un Queue
y un put
un elemento en la cola del proceso principal. Al observar el código processing.queue
, puedo ver que se ha iniciado un hilo de conexión. Este hilo del alimentador comprobará currentProcess()._exiting
, pero currentProcess()
se evalúa a _MainProcess
que no tiene dicho atributo como se puede ver en el módulo processing.process
. ¿Cómo resolver esto? ¿Es un error en processing
? En caso afirmativo, ¿puedo simplemente ponerle un monopatín usando currentProcess()._exiting = False
?
ejemplo Mínimo:
#!/usr/bin/python
import processing
import processing.queue
class Worker(processing.Process):
def __init__(self):
processing.Process.__init__(self)
self.queue = processing.queue.Queue()
def run(self):
element = self.queue.get()
print element
if __name__ == '__main__':
w = Worker()
w.start()
# To trigger the problem, any non-pickleable object is to be passed here.
w.queue.put(lambda x: 1)
w.join()
¿Puede publicar un fragmento que reproduzca el error? Además, me gusta mucho la palabra * monkeypatch *. Esperando usarlo pronto :) –
Creo que hay una manera correcta de hacer lo que quieras sin parches. – khachik
@ Space_C0wb0y Lo siento, tuve algunos problemas para reducir esas 3k líneas de código a un ejemplo más pequeño. : -/ –