錯誤的源代碼:
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()函數一旦進入無法退出,一直在接收輸入的數據