Итак, у меня есть программа, в «основном» процессе я запускаю новый объект 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
Как дела?