在子进程的Python用户输入(Python user input in child process

2019-07-05 00:15发布

我试图创建一个子进程,可以通过的raw_input()或输入()获取输入,但我发现了衬垫错误的EOFError的结束要求输入的时候EOF。

我这样做是为了与蟒蛇多处理实验,我记得这一点很容易在C的工作有没有不使用管道或队列从主过程中它的孩子解决方法吗? 我真的很喜欢孩子,处理用户输入。

def child():
    print 'test' 
    message = raw_input() #this is where this process fails
    print message

def main():
    p =  Process(target = child)
    p.start()
    p.join()

if __name__ == '__main__':
    main()

我写了一些测试代码,希望展示我想要实现的。

Answer 1:

我的回答是从这里取: 有没有办法通过“标准输入”作为参数传递给在python另一个进程?

我已经修改了你的榜样,它似乎工作:

from multiprocessing.process import Process
import sys
import os

def child(newstdin):
    sys.stdin = newstdin
    print 'test' 
    message = raw_input() #this is where this process doesn't fail anymore
    print message

def main():
    newstdin = os.fdopen(os.dup(sys.stdin.fileno()))
    p =  Process(target = child, args=(newstdin,))
    p.start()
    p.join()

if __name__ == '__main__':
    main()


文章来源: Python user input in child process