import socket from threading import Thread def dealclient(newsocket,destadd): while True: recvdata = newsocket.recv(1024) if len(recvdata) >0: print(recvdata) else: print('数据接收完毕',destadd) break newsocket.close() if __name__ == '__main__': tcpserver = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcpserver.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)#设置这个以后可以同时处理多个请求 add = ('',7788) tcpserver.bind(add) tcpserver.listen(5) while True: print('主进程等待连接') newsocket,destadd = tcpserver.accept() t0 = Thread(target=dealclient,args=(newsocket,destadd)) #因为已经传递了参数,所以可以在主进程中关闭 t0.start() newsocket.close()
为什么我这里用线程,就出错了,而用进程却不出错
while True: print('主进程等待连接') newsocket,destadd = tcpserver.accept() t0 = Thread(target=dealclient,args=(newsocket,destadd)) #因为已经传递了参数,所以可以在主进程中关闭 t0.start() #newsocket.close()
线程共享newsocket套接字,如果不关闭的话,再有一个进程进来不会干扰之前的套接字吗?重名了。
一般在编写程序时,是用多线程多吗,我觉得多进程,进程池基本没什么用,多线程能够实现许多同步发生的事情。
多进程在开发中,如何使用,或者说在什么情况下使用
import multiprocessing import time def worker(interval): n = 5 while n > 0: print("The time is {0}".format(time.ctime())) time.sleep(interval) n -= 1 if __name__ == "__main__": p = multiprocessing.Process(target = worker, args = (3,)) p.start() print ("p.pid:", p.pid) print ("p.name:", p.name) print ("p.is_alive:", p.is_alive())
在执行了p.start()后不就是调用了p.run()方法吗?那么主进程中的print打印,和子进程中的print语句是同时执行吗?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637