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

原文地址:https://www.cnblogs.com/ellisonzhang/p/10453371.html