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)
    time.sleep(3)
    print("[%s]----is down----
" %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----


'''

  

原文地址:https://www.cnblogs.com/bainianminguo/p/7248204.html