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()
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 创建发送函数
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()函数一旦进入无法退出,一直在接收输入的数据

发布了705 篇原创文章 · 获赞 867 · 访问量 151万+

猜你喜欢

转载自blog.csdn.net/sinat_38682860/article/details/105497074