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