您的位置:首页 > 编程语言 > Python开发

python的多线程和守护线程

2017-07-28 07:25 344 查看
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----

'''


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: