多任务编程之线程

  • 线程
    线程也是一种多任务编程方法,也是可以利用计算机多核资源完成程序的并发执行。线程又被称为轻量级的进程。
  • 线程特征
 * 线程是计算机多核分配的最小单位
 * 一个进程可以包含多个线程
 * 线程也是一个运行的过程,消耗计算机资源,多个线程共享进程的资源和空间
 * 线程的创建删除消耗的资源都要远远小于进程
 * 多个线程之间执行互不干扰
 * 线程也有自己的特有属性,比如指令集 ID
  • threading 模块创建线程
threading.Thread()
	功能:创建线程对象
	参数:name 线程名称 默认为 Thread-1
		  target 线程函数
		  args 元组 给线程函数位置传参
		  kwargs 字典 给线程函数键值传参

t.start() 启动线程 自动运行线程函数
t.join([timeout]) 回收线程
  • 演示线程的threading模块
#演示线程的创建和使用
import threading
from time import sleep
import os

a = 1

#线程函数
def music():
	global a
	print('a = {}'.format(a))
	
	for i in range(5):
		sleep(1)		
		print('播放葫芦娃',os.getpid())
	a = 10000 # 查看主线程的a是否修改


#创建线程对象
t = threading.Thread(target = music)
t.start()

for i in range(5):
	sleep(1.5)
	print('播放灌篮高手',os.getpid())

print('main thread a = {}'.format(a)) # 10000,线程修改的是进程中的变量
t.join()
  • 线程对象属性
t.is_alive() 查看线程状态
t.name 线程名称
t.setName 设置线程名称
threading.currentThread() 获取当前线程对象
t.deamon 属性
默认情况主线程退出不会影响分支线程执行,如果设置为True则分支线程随主线程退出

设置方法:
t.deamon = True
t.setDaemon(True)

判断属性值
t.isDaemon()
* 要在start前设置,不会和join同时使用
  • 线程属性函数使用
#线程属性函数演示
from threading import Thread,currentThread
from time import sleep

#线程函数
def fun(sec):
	print('线程属性测试')
	sleep(sec)
	#线程对象的getName属性获取名称
	print('%s 线程结束'%currentThread().getName())


#创建线程
threads = []
for i in range(3):
	t = Thread(name = 'Worker{}'.format(i),\
		target = fun,args = (2,))
	threads.append(t)
	t.start()

print('is alive :',t.is_alive())
threads[0].setName('Player')
print(threads[0].name) # Player

#回收线程
for i in threads:
	i.join()
  • 线程的daemon属性演示
#daemon属性
from threading import Thread
from time import sleep

def fun():
	sleep(3)
	print('daemon测试')

t = Thread(target = fun)
t.setDaemon(True) # 默认为False时不随着主线程结束而结束
print(t.isDaemon())

t.start()

print('主线程结束') # 程序结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值