Fork me on GitHub

一 概念

  众所周知,python中的获取键盘输入,input函数是没办法用在子程序的,这就限制了它的用途。想要在子程序中获取键盘输入。唯有

fn=sys.stdin.fileno函数了。

二 实例解析

  在主进程中敲写代码fn=sys.stdin.fileno(),然后将获取到的文件描述符fn传入子进程,子进程敲写代码sys.stdin = os.fdopen(fn),

然后就可以正常使用sys.stdin.readline()获取键盘输入了。

下面给出一个例子:

import os
import sys
from multiprocessing import Process


def test_input(fn):
    sys.stdin = os.fdopen(fn)
    while True:
        #info = sys.stdin.readline()
        info = int(sys.stdin.readline().strip('\n'))
        print("start print info!")
        print(info)

        if info == 12:
            print("equel is 1")


if __name__ == "__main__":
    print("start progress!")
    fn = sys.stdin.fileno()
    Process(target=test_input, args=(fn, )).start()

结果:

start progress!
12
start print info!
12
equel is 1
^Z

 

三 总结

 这里注意输入的值,想要转成int,还需要一个强制转换函数。

 

posted on 2023-10-24 18:21  虚生  阅读(101)  评论(0编辑  收藏  举报