import socket
import threading
import multiprocessing
# 創(chuàng)建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()
# 創(chuàng)建發(fā)送函數(shù)
def send():
? ? while 1:
? ? ? ? send_data = input('請(qǐng)輸入要發(fā)送的內(nèi)容:')
? ? ? ? link_socket.send(send_data.encode())
# 創(chuàng)建接受函數(shù)
def recv():
? ? while 1:
? ? ? ? recv_data = link_socket.recv(1024)
? ? ? ? print(recv_data.decode())
# 創(chuàng)建多進(jìn)程
p1 = multiprocessing.Process(target=send_)
p2 = multiprocessing.Process(target=recv_)
p1.start()
p2.start()
# 創(chuàng)建進(jìn)程池
pool = multiprocessing.Pool(2)
for _ in range(2):
? ? pool.apply_async(recv)
? ? pool.apply_async(send())
pool.close()
pool.join()
在進(jìn)程python的設(shè)計(jì)里面只有主進(jìn)程可以接收input()的輸入,子進(jìn)程沒(méi)有輸入模式,運(yùn)行直接報(bào)錯(cuò)
更坑的是進(jìn)程池,表面上不會(huì)出錯(cuò),但是input()函數(shù)一旦進(jìn)入無(wú)法退出,一直在接收輸入的數(shù)據(jù)