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()