基於Python的子進程獲取鍵盤輸入

一 概念

  衆所周知,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,還需要一個強制轉換函數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章