进程中的Python命令行输入

发布于 2021-01-29 19:33:56

我有一个系统,需要从几个不同的进程接收输入。最简单的只是命令行,用户可以在其中手动输入数据。这些数据将添加到multiprocessing.Queue并由主流程稍后处理,但我还没有走那么远;raw_input在进程内部调用似乎不起作用。我抽出了代码的精髓,下面是一个示例:

import multiprocessing

def f():
    while True:
        raw_input('>>>')

p = multiprocessing.Process(target = f)
p.start()

这个简单的代码抛出了这一点:

~$ 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
>>>~$

如何在Python的进程中获取命令行输入?

关注者
0
被浏览
70
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    当您在Python中生成线程时,它将关闭stdin。您不能使用子流程来收集标准输入。使用主线程来收集输入,然后将其从主线程发布到队列中。可以将stdin传递到另一个线程,但是您可能需要在主线程中将其关闭。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看