Python多线程之阻塞join()和线程守护setDeamon()

Python多线程之阻塞join和线程守护setDeamon

多线程默认情况

无阻塞无线程守护。

import threading
import time

def run(process = 'python'):
	time.sleep(2)
	print('当前线程的名字是: ', process)
	
if __name__ == '__main__':
	thread_list = ['know','like','love','marry']
	start_time = time.time()
	print("这是主线程",threading.current_thread().name)
	for i in thread_list:
		t = threading.Thread(target = run,args = ((i,)))
		t.start()
	print("主线程结束!",threading.current_thread().name)
	end_time = time.time()
	print("一共用时:",end_time-start_time)

运行结果:

这是主线程 MainThread
主线程结束! MainThread
一共用时: 0.00327301025390625
当前线程的名字是:  like
当前线程的名字是:  know
当前线程的名字是:  love
当前线程的名字是:  marry

从结果可以看出主线程结束后,子线程还在执行,最后结束。

设置线程守护setDaemon的作用

import threading
import time

def run(process = 'python'):
	time.sleep(2)
	print('当前线程的名字是: ', process)
	
if __name__ == '__main__':
	thread_list = ['know','like','love','marry']
	start_time = time.time()
	print("这是主线程",threading.current_thread().name)
	for i in thread_list:
		t = threading.Thread(target = run,args = ((i,)))
		t.setDaemon(True)
		t.start()
	print("主线程结束!",threading.current_thread().name)
	end_time = time.time()
	print("一共用时:",end_time-start_time)

运行结果:

这是主线程 MainThread
主线程结束! MainThread
一共用时: 0.002863645553588867

设置线程守护为True时,当主线程结束时,如果子线程没有执行完,将会被kill掉;设置线程守护为False时,线程守护没有作用。

线程阻塞join作用

import threading
import time

def run(process = 'python'):
	time.sleep(2)
	print('当前线程的名字是: ', process)
	
if __name__ == '__main__':
	thread_list = ['know','like','love','marry']
	start_time = time.time()
	print("这是主线程",threading.current_thread().name)
	for i in thread_list:
		t = threading.Thread(target = run,args = ((i,)))
		t.setDaemon(True)
		t.start()
		t.join()
	print("主线程结束!",threading.current_thread().name)
	end_time = time.time()
	print("一共用时:",end_time-start_time)

运行结果:

这是主线程 MainThread
当前线程的名字是:  know
当前线程的名字是:  like
当前线程的名字是:  love
当前线程的名字是:  marry
主线程结束! MainThread
一共用时: 8.01774787902832

主线程一直等待全部的子线程结束之后,主线程自身才结束,程序退出.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能驾驶小管家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值