当前位置: 首页 > 后端技术 > Python

【python】Python线程调用

时间:2023-03-25 22:10:10 Python

简介:  Python线程可以通过主线程调用线程执行其他命令,  为Python提供更方便的使用。  并发线程测试#命令调用方法importthreading,time#定义每个线程要运行的函数defrun(n):print("task",n)time.sleep(1)#生成一个线程实例目标=Target,args=parametert1=threading.Thread(target=run,args=("t1",))t2=threading.Thread(target=run,args=("t2",))#启动线程t1.start()t2.start()并发类继承测试importthreading,time#继承threading.ThreadclassMyThread(threading.Thread):#重写父类的构造函数def__init__(self,n):#重构构造函数super(MyThread.self).__init__()self.n=n#定义每个线程要运行的函数defrun(self):print("runningtask",self.n)#Instantiatet1=MyThread("t1")t2=MyThread("t2")#启动线程t1.start()t2.start()实现并发串行执行命令importthreading,timedefrun(n):print("task",n)time.sleep(1)start_time=time.time()foriinrange(50):t=threading.Thread(target=run,args=("t-%s"%i,))t.start()t.join()#注意:默认情况下,主线程不会等待子线程执行完毕。#注意:串口:等待上一条命令执行完毕,再执行下一条命令。#Note:Example.join()#wait()等待执行完成,执行下一条命令,可以实现序列化。实现主线程等待子线程执行完再执行importthreading,time#定义每个线程要运行的函数defrun(n):print("task",n)time.sleep(2)#测试执行结果后面花费的时间start_time=time.time()#创建一个列表来接收t.start()对象的内容。t_objs=[]#Loop50timesforiinrange(3):#生成线程实例target=target,args=parametert=threading.Thread(target=run,args=("t-%s"%i,))#启动线程并调用runt.start()#将执行结果添加到链表中t_objs.append(t)#每个循环t对象等待一次。fortint_objs:#每循环等待一次t.join()#打印时间print("cost:",time.time()-start_time)daemondaemonthread:依赖于主线程的存在,主线程工作.  功能:设置为守护线程后,主线程关闭,守护线程也关闭。使用场景:socketserver每次连接时,socketserver都会启动一个     线程。当服务器关闭时,其他线程也需要关闭,所以可以使用守护线程来关闭。`importthreading,time定义了每个线程要运行的函数defrun(n):print("task",n)time.sleep(5)创建一个列表来接收t.start()对象的内容。t_objs=[]Loop3timesforiinrange(3):#生成线程实例target=target,args=parametert=threading.Thread(target=run,args=("t-%s"%i,))#startbeforeset#设置当前线程为daemonthreadt.setDaemon(True)#启动线程并调用runt.start()注意:所有程序执行完毕后,还有一个join等待,退出执行后的程序。注:主线程MainThread,线程Thread。threading.current_thread()#测试当前活动的线程类型。threading.active_count()#测试当前活跃的线程数。