python的多线程和守护线程详解编程语言

1、创建一个多线程

import threading 
import time 
 
''' 
def threading_func(num): 
    print("running on number:%s" %(num)) 
    time.sleep(3) 
 
if __name__ == '__main__': 
    t1 = threading.Thread(target=threading_func,args=(1,)) 
    t2 = threading.Thread(target=threading_func,args=(2,)) 
    t1.start() 
    t2.start() 
    #这里不会等待就会执行print语句,因为执行这个代码的是一个线程,而t1和t2又分别是2个线程,所以不会有等待就会执行print语句 
    print("____________________main____________________") 

2、join语句,等待某个线程执行完成在往下执行

def threading_func(num): 
    print("running on number:%s" %(num)) 
    time.sleep(3) 
 
if __name__ == '__main__': 
    t1 = threading.Thread(target=threading_func,args=(1,)) 
    t2 = threading.Thread(target=threading_func,args=(2,)) 
    t1.start() 
    t2.start() 
    # t2.join() 
    print(t1.getName()) 
    #获取线程名 
    print(t2.getName()) 
    t1.join() 
    t2.join() 
    #等待线程t1的执行完成在往下执行,就是wait的意思,子线程t1执行后在往下执行 
    print("____________________main____________________") 

3、线程的守护daemon

import threading 
import time 
 
def run(n): 
    print("[%s]----is running----/n" %n) 
    time.sleep(3) 
    print("[%s]----is down----/n" %n) 
 
''' 
def main(): 
    for i in range(5): 
        t = threading.Thread(target=run,args=[i,]) 
        t.start() 
        time.sleep(3) 
        print("start threading",t.getName()) 
 
#这个例子是这样的,m是主线程,m这个主线程调用main这个方法,main这个方法又构建了5个子线程,我们就可以设置主线程监视子线程,监视的意思就是主线程退出,无论子线程是否执行 
#完毕,都全部退出m.setDaemon(True),这个设置就是m这个主线程监视m的所有的子线程 
m = threading.Thread(target=main,args=[]) 
m.setDaemon(True) 
m.start() 
# m.join() 
print("-----main thread down----") 
 
 
# 结果如下,主线程退出后,子线程有的还没有开始就已经退出了 
# -----main thread down---- 
# [0]----is running---- 
 
''' 
 
 
 
''' 
 
def main(): 
    for i in range(5): 
        t = threading.Thread(target=run,args=[i,]) 
        t.start() 
        time.sleep(3) 
        print("start threading",t.getName()) 
 
#这个例子是这样的,m是主线程,m这个主线程调用main这个方法,main这个方法又构建了5个子线程,我们就可以设置主线程监视子线程,监视的意思就是主线程退出,无论子线程是否执行 
#完毕,都全部退出m.setDaemon(True),这个设置就是m这个主线程监视m的所有的子线程 
m = threading.Thread(target=main,args=[]) 
# m.setDaemon(True) 
m.start() 
# m.join() 
print("-----main thread down----") 
 
 
# 结果如下,主线程退出后,子线程有的还没有开始就已经退出了 
# -----main thread down---- 
# [0]----is running---- 
 
-----main thread down---- 
[0]----is running---- 
 
start threading Thread-2 
[0]----is down---- 
 
[1]----is running---- 
 
[1]----is down---- 
start threading Thread-3 
 
[2]----is running---- 
 
start threading Thread-4 
[3]----is running---- 
 
[2]----is down---- 
 
start threading Thread-5 
[3]----is down---- 
 
[4]----is running---- 
 
start threading Thread-6 
[4]----is down---- 
 
 
''' 

  

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20884.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论