Tengo un sistema que necesita recibir datos de algunos procesos diferentes. Lo más simple es solo una línea de comando donde el usuario ingresa los datos manualmente. Esta información se agregará a multiprocessing.Queue
y luego será procesada por el proceso principal, pero ni siquiera estoy llegando tan lejos; llamar al raw_input
dentro de un proceso no parece funcionar. Saqué la carne del código y aquí está un ejemplo:Entrada de línea de comandos de Python en un proceso
import multiprocessing
def f():
while True:
raw_input('>>>')
p = multiprocessing.Process(target = f)
p.start()
Este código simple lanza esto:
~$ python test.py
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "test.py", line 5, in f
raw_input('>>>')
EOFError: EOF when reading a line
>>>~$
¿Cómo puedo obtener la entrada de línea de comandos en un proceso en Python?
Después de pensarlo un poco, la decisión de los creadores de Python tiene sentido para mí. El hecho de que estoy tratando de hacer esto apunta a un mal diseño de mi parte y tengo que pasar a un modelo más cliente/servidor-ish. ¡Gracias por tu ayuda! – kerkeslager
usa la palabra 'proceso' en lugar de' hilo' en este caso. – jfs