un semplice esempio:Python strano multiprocessing con nome di variabile
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import multiprocessing
class Klass(object):
def __init__(self):
print "Constructor ... %s" % multiprocessing.current_process().name
def __del__(self):
print "... Destructor %s" % multiprocessing.current_process().name
if __name__ == '__main__':
kls = Klass()
corsa con errore quando fare current_process
in __del__
:
Constructor ... MainProcess
Exception AttributeError: "'NoneType' object has no attribute 'current_process'" in <bound method Klass.__del__ of <__main__.Klass object at 0x7f5c34e52090>> ignored
se cambio un nome di variabile:
als = Klass()
ottiene il risultato giusto:
Constructor ... MainProcess
... Destructor MainProcess
e ho provato molti nomi di variabili, alcuni ok, qualche errore.
Perché nome di istanza diverso, il modulo di multiprocessing sarà None in __del__
?
Vedo lo stesso risultato ... è molto strano! – jonrsharpe
Lo stesso qui. Produce gli stessi risultati strani. Quindi immagino che tu abbia individuato un bug in "multiprocessing". – Sait
@jonrsharpe vedi la risposta di unutbu –