Итак, у меня есть программа, в "основном" процессе я запускаю новый объект Process, который (то, что я хочу) должен читать строки из STDIN и добавлять их в объект Queue. .
По сути, базовая настройка системы заключается в том, что существует процесс «получения команд», в который пользователь будет вводить команды / запросы, и мне нужно передать эти запросы другим подсистемам, работающим в отдельных процессах. Я думаю о том, чтобы поделиться ими через многопроцессорную очередь, из которой другие системы могут читать.
То, что у меня есть (сосредоточившись только на получении команд / запросов), в основном:
def sub_proc(q):
some_str = ""
while True:
some_str = raw_input("> ")
if some_str.lower() == "quit":
return
q.put_nowait(some_str)
if __name__ == "__main__":
q = Queue()
qproc = Process(target=sub_proc, args=(q,))
qproc.start()
qproc.join()
# now at this point q should contain all the strings entered by the user
Проблема в том, что я получаю:
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/home/blah/blah/blah/blah.py", line 325, in sub_proc
some_str = raw_input("> ")
File "/randompathhere/eclipse/plugins/org.python.pydev_2.1.0.2011052613/PySrc/pydev_sitecustomize/sitecustomize.py", line 181, in raw_input
ret = original_raw_input(prompt)
EOFError: EOF when reading a line
Как сделать?