Tengo un problema con el siguiente código y con cualquier código que use la función print
en los procesos secundarios. No puedo ver ninguna declaración impresa, incluso si uso sys.std[err|out].write('worker')
en lugar de print
.Los procesos secundarios creados con el módulo de multiprocesamiento de python no se imprimirán
Este es el código (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()
La salida está en blanco.
Nota: El código siguiente utiliza el módulo threading y se imprime la salida:
import threading
def f(name):
print 'hello', name
if __name__ == '__main__':
p = threading.Thread(target=f, args=('bob',))
p.start()
p.join()
salida: hello bob
¿Me podría apuntar a la solución? Gracias por adelantado.
Muchas gracias Tamas, pero esto en mi caso no funcionó ... – John
¿En qué plataforma estás? Lo anterior funciona para mí en Mac OS X; de hecho, funciona incluso sin descargar sys.stdout. –
Tamas, la plataforma en la que estoy trabajando es win32. Por cierto, hasta ahora traté de ejecutar el código dentro de IDLE. Hoy traté de ejecutarlo desde la línea de comandos, usando esta sintaxis: python.exe my_prog.py y funcionó. ¿Alguien sabe por qué? ¿Y cómo puedo visualizar la salida de impresión ejecutando programas dentro de IDLE? – John