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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM