python中子程序不支援input()函式輸入
阿新 • • 發佈:2019-02-03
錯誤的原始碼:
import socket import threading import multiprocessing # 建立socket serve_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serve_socket.bind(('', 8086)) serve_socket.listen(128) link_socket, addres = serve_socket.accept() # 建立傳送函式 def send(): while 1: send_data = input('請輸入要傳送的內容:') link_socket.send(send_data.encode()) # 建立接受函式 def recv(): while 1: recv_data = link_socket.recv(1024) print(recv_data.decode()) # 建立多程序 p1 = multiprocessing.Process(target=send_) p2 = multiprocessing.Process(target=recv_) p1.start() p2.start() # 建立程序池 pool = multiprocessing.Pool(2) for _ in range(2): pool.apply_async(recv) pool.apply_async(send()) pool.close() pool.join()
在程序python的設計裡面只有主程序可以接收input()的輸入,子程序沒有輸入模式,執行直接報錯
更坑的是程序池,表面上不會出錯,但是input()函式一旦進入無法退出,一直在接收輸入的資料