1. 程式人生 > >python中子程序不支援input()函式輸入

python中子程序不支援input()函式輸入

錯誤的原始碼:

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()函式一旦進入無法退出,一直在接收輸入的資料