Ho un problema con il codice sottostante e con qualsiasi codice che utilizza la funzione print
nei processi figli. Non riesco a visualizzare alcuna dichiarazione stampata, anche se utilizzo sys.std[err|out].write('worker')
anziché print
.I processi figlio creati con il modulo multiprocessing python non verranno stampati
Questo è il codice (from the official python documentation):
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
L'uscita è vuoto.
Nota: Il codice seguente utilizza il modulo threading e stampa l'uscita:
import threading
def f(name):
print 'hello', name
if __name__ == '__main__':
p = threading.Thread(target=f, args=('bob',))
p.start()
p.join()
uscita: hello bob
Potete per favore mi punto alla soluzione? Grazie in anticipo.
Grazie mille Tamas, ma nel mio caso non ha funzionato ... – John
Quale piattaforma sei? Quanto sopra funziona per me su Mac OS X; in effetti, funziona anche senza svuotare sys.stdout. –
Tamas, la piattaforma su cui sto lavorando è win32. A proposito, fino ad ora ho provato a eseguire il codice all'interno di IDLE. Oggi ho provato ad eseguirlo dalla riga di comando, usando questa sintassi: python.exe my_prog.py e ha funzionato. Qualcuno sa perché? E come posso visualizzare l'output di stampa eseguendo programmi all'interno di IDLE? – John