MamAttributeError: obiekt '_MainProcess' nie ma atrybutu '_exiting'
AttributeError: '_MainProcess' object has no attribute '_exiting'
z aplikacji Pythona. Niestety ten kod musi uruchomić Python 2.5, a zatem moduł processing
obecnie znany jako multiprocessing
. To, co robiłem, polega na utworzeniu obiektu Process
z elementem oraz w kolejce z procesu głównego. Patrząc na kod processing.queue
, widzę, że wątek podajnika jest uruchamiany. Ten wątek podajnika sprawdzi następnie currentProcess()._exiting
, ale currentProcess()
oceni jako _MainProcess
, który nie ma wspomnianego atrybutu, co można zobaczyć w module processing.process
. Jak rozwiązać ten problem? Czy jest to błąd w processing
? Jeśli tak, czy mogę po prostu go zaimportować za pomocą currentProcess()._exiting = False
?
Minimal przykład:
#!/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()
Czy możesz zamieścić fragment, który powieliby błąd? Poza tym bardzo podoba mi się słowo * monkeypatch *. Nie mogę się doczekać, aby go wkrótce użyć :) –
Wierzę, że istnieje właściwy sposób robienia tego, co chcesz, bez łatania. – khachik
@ Space_C0wb0y Przykro mi, miałem trochę problemów z redukcją 3k linii kodu do mniejszego przykładu. : -/ –