线程创建--标准库模块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
======主线程结束======

 

posted @ 2021-01-10 16:33  昱成  阅读(148)  评论(0编辑  收藏  举报