使用多处理和处理输入

时间:2019-05-15 20:58:23

标签: python multiprocessing

我想制作一个可以同时运行的多处理程序。

所以我希望我的进程每5秒进行一次计数,而另一个进程不断要求输入并打印输入。

并且要求两个输入的过程应该在无限循环中运行,因为稍后我要更改它,以便每个输入在第一个过程中都是数值变量的值。 (如果您也有任何想法可以帮助我解决这个问题,请告诉我!我非常感谢)

这是我拥有的代码,它只是给我 EOFError:读取行时出现EOF

import os
import time

from multiprocessing import Process

def doubler():
    number =0
    while True:
        proc = os.getpid()
        print('num : {0} by procss id : {1}'.format(number,proc))
        time.sleep(5)

def test():

    while True:
        x = raw_input("input x : ")
        y = raw_input("input y : ")
        print('x = {0}, y = {1}'.format(x,y))


if __name__ == '__main__':
    proc1 = Process(target=doubler)
    proc2 = Process(target=test)
    procs = []
    procs.append(proc1)
    procs.append(proc2)
    proc1.start()
    proc2.start()

    for proc in procs:
        proc.join()

结果---> EOF错误:读取一行时出现EOF

1 个答案:

答案 0 :(得分:0)

我很抱歉成为手指王子,但我在stackoverflow中发现了这一点: ” 当您在Python中生成线程时,它将关闭stdin。您不能使用子流程来收集标准输入。使用主线程来收集输入,然后将其从主线程发布到队列中。可以将stdin传递给另一个线程,但是您可能需要在主线程中将其关闭。 “

这不是我写的,而是卡尔的答案。 F。 Python command line input in a process