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()函数一旦进入无法退出,一直在接收输入的数据

你可能感兴趣的:(python中子进程不支持input()函数输入)