python multiprocessing python-idle

python - Se puede ejecutar la clase de proceso de multiprocesamiento desde IDLE



multiprocessing python-idle (1)

Si. Lo siguiente funciona en esa función f se ejecuta en un proceso separado (tercero).

from multiprocessing import Process def f(name): print(''hello'', name) if __name__ == ''__main__'': p = Process(target=f, args=(''bob'',)) p.start() p.join()

Sin embargo, para ver la salida de print , al menos en Windows, uno debe iniciar IDLE desde una consola así.

C:/Users/Terry>python -m idlelib hello bob

(Use idlelib.idle en 2.x.) La razón es que IDLE ejecuta el código de usuario en un proceso separado. Actualmente, la conexión entre el proceso IDLE y el proceso del código de usuario es a través de un socket. La bifurcación realizada mediante multiprocesamiento no duplica ni hereda la conexión de socket. Cuando IDLE se inicia a través de un ícono o Explorer (en Windows), no hay ningún lugar al que pueda ir la salida de impresión. Cuando se inicia desde una consola con python (en lugar de pythonw ), la salida va a la consola, como se pythonw anteriormente.

Un ejemplo básico de proceso multiproceso se ejecuta cuando se ejecuta desde un archivo, pero no desde IDLE. ¿Por qué es eso y se puede hacer?

from multiprocessing import Process def f(name): print(''hello'', name) p = Process(target=f, args=(''bob'',)) p.start() p.join()