线程创建--标准库模块threading
1、创建线程对象
t = threading.Thread()
功能 : 创建线程对象
参数 : target, 线程函数
name ,线程名称, 默认Thread-1
args, 元组, 给线程函数位置传参
kwargs, 字典, 给线程函数键值传参
返回 : 线程对象
2、启动线程
t.start()
3、回收线程
t.join([timeout])
4、线程对象属性
【1】t.name
线程名称
【2】t.setName()
设置线程名称
【3】t.is_alive()
查看线程状态
【4】threading.currentThread()
获取到当前线程对象
【5】t.daemon
① 默认情况下主线程结束不会影响分支线程执行
② 设置为True时主线程退出则分支线程也退出
③ 设置daemon值
t.setDaemon(True)
t.daemon = True
④ 查看daemon值
t.isDaemon()
【cre-thread1.py】
import threading
import time
import os
a = 1
#线程函数
def music():
global a
a = 10000
for i in range(5):
time.sleep(2)
print("播放葫芦娃",os.getpid())
t = threading.Thread(target = music)
t.start()
for i in range(5):
time.sleep(1.5)
print("播放灌篮高手",os.getpid())
t.join()
print("a = ",a)
#结果
播放灌篮高手 9766
播放葫芦娃 9766
播放灌篮高手 9766
播放葫芦娃 9766
播放灌篮高手 9766
播放葫芦娃 9766
播放灌篮高手 9766
播放灌篮高手 9766
播放葫芦娃 9766
播放葫芦娃 9766
a = 10000
【cre-thread1.py】
import threading
import time
import os
a = 1
#线程函数
def music():
global a
a = 10000
for i in range(5):
#time.sleep(2)
print("播放葫芦娃",os.getpid())
t = threading.Thread(target = music)
t.start()
for i in range(5):
#time.sleep(1.5)
print("播放灌篮高手",os.getpid())
t.join()
print("a = ",a)
~
#结果
播放葫芦娃 9772
播放葫芦娃 9772
播放葫芦娃 9772
播放葫芦娃 9772
播放葫芦娃 9772
播放灌篮高手 9772
播放灌篮高手 9772
播放灌篮高手 9772
播放灌篮高手 9772
播放灌篮高手 9772
a = 10000
#-------------------------------------------------#
【cre-thread2.py】
from threading import Thread,currentThread
from time import sleep
#线程函数
def fun(sec):
print("线程属性测试")
sleep(sec)
#获取当前线程对象调用getName()获取名称
print("%s 线程结束"%currentThread().getName())
thread = []
for i in range(3):
t = Thread(name = "wwww%d"%i,target = fun,\
args = (3,))
thread.append(t)
t.start()
print(thread[0].is_alive())
thread[1].setName("www") #设置线程名称
print(thread[2].name) #获取线程名称
#线程回收
for i in thread:
i.join()
#结果
线程属性测试
线程属性测试
线程属性测试
True
wwww2
wwww0 线程结束
www 线程结束
wwww2 线程结束
【cre-thread2.py】
from threading import Thread,currentThread
from time import sleep
#线程函数
def fun(sec):
print("线程属性测试")
#sleep(sec)
#获取当前线程对象调用getName()获取名称
print("%s 线程结束"%currentThread().getName())
thread = []
for i in range(3):
t = Thread(name = "wwww%d"%i,target = fun,\
args = (3,))
thread.append(t)
t.start()
print(thread[0].is_alive())
thread[1].setName("www") #设置线程名称
print(thread[2].name) #获取线程名称
#线程回收
for i in thread:
i.join()
#结果
线程属性测试
wwww0 线程结束
线程属性测试
wwww1 线程结束
线程属性测试
wwww2 线程结束
False
wwww2
#--------------------------------------------#
from threading import Thread
from time import sleep
def fun():
sleep(3)
print("Daemon测试")
t = Thread(target = fun)
t.setDaemon(True)
# t.daemon = True
print(t.isDaemon()) #查看daemon值
t.start()
print("======主线程结束======")
#结果
True
======主线程结束======