python threading结束线程,python thread方法

  python threading结束线程,python thread方法

  Python的thread模块是比较底层的模块,python的threading模块包装了thread,使用起来更方便。本文将介绍线程的使用。python中的Thread(),有需要的可以参考一下。

  00-1010 1.线程2的概念。简单使用2。threading.thread () 2.1增加一个线程可以让程序运行得更快2.2主线程会等待所有子线程完成3。检查螺纹4的数量。线程参数和序列4.1传递参数的方法4.2线程的执行序列5。守护线程。

  

目录

 

  线程,有时称为轻量级进程(LWP),是程序执行流程的最小单位。标准线程由线程ID、当前指令指针(PC)、寄存器组和堆栈组成。此外,线程是进程中的一个实体,是由系统独立调度和分派的基本单元。线程本身不拥有系统资源。

  

1. 线程的概念

 

  

2. threading.thread()的简单使用

 

  Python的thread模块是比较底层的模块,python的threading模块包装了thread,使用起来更方便。

  运行中有一些必不可少的资源,但是它可以与属于同一进程的其他线程共享一个进程拥有的所有资源。

  导入线程

  导入时间

  def saySorry():

  打印(‘亲爱的,我错了。“我可以吃晚饭吗,”)

  时间.睡眠(5)

  if __name__==__main__:

  start_time1=time.time()

  对于范围(5):中的I

  t=螺纹。线程(target=saySorry)

  T.start() #启动线程,即让线程开始执行。

  end_time1=time.time()

  打印(结束时间1 -开始时间1)

  start_time2=time.time()

  对于范围(5):中的I

  t=说抱歉()

  end_time2=time.time()

  打印(结束时间2 -开始时间2)

  输出是:

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  0.001995086669921875

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  亲爱的,我犯了个错误。我能吃吗?

  25.001766204833984

  

2.1 添加线程可以是程序运行更快

 

  导入线程

  从时间导入睡眠,ctime

  def唱():

  对于范围(3):中的I

  打印(‘唱歌.% d“% I”)

  睡眠(1)

  def dance():

  对于范围(3):中的I

  印刷(‘跳舞.% d“% I”)

  睡眠(1)

  if __name__==__main__:

  打印(-start-:% s% ctime())

  t1=线程。线程(target=sing)

  t2=线程。线程(目标=舞蹈)

  t1.start()

  t2.start()

  # sleep(5) #阻塞这一行代码并尝试它,程序

  是否会立马结束?

   print(---结束---:%s%ctime())

  

  输出为:

  

---开始---:Mon Sep 28 14:42:09 2020
正在唱歌...0
正在跳舞...0---结束---:Mon Sep 28 14:42:09 2020

正在唱歌...1
正在跳舞...1
正在唱歌...2
正在跳舞...2

 

  

 

  如果释放‘ sleep(5) ’,输出为:

  

---开始---:Mon Sep 28 14:43:36 2020
正在唱歌...0
正在跳舞...0
正在跳舞...1
正在唱歌...1
正在唱歌...2正在跳舞...2

---结束---:Mon Sep 28 14:43:41 2020

 

  

 

  

 

  

3.查看线程数量

 

  

import threading

 

  输出为:

  

---开始---:Mon Sep 28 14:46:16 2020
正在唱歌...0
正在跳舞...0
当前运行的线程数为:3
当前运行的线程数为:3
正在唱歌...1
正在跳舞...1当前运行的线程数为:3

当前运行的线程数为:3
正在唱歌...2
正在跳舞...2
当前运行的线程数为:3
当前运行的线程数为:3
当前运行的线程数为:1

 

  

 

  

 

  

4.线程参数及顺序

 

  

 

  

4.1 传递参数的方法

 

  使用args 传递参数 threading.Thread(target=sing, args=(10, 100, 100))

  使用kwargs传递参数 threading.Thread(target=sing, kwargs={a: 10, b:100, c: 100})

  同时使用 args 和 kwargs 传递参数 threading.Thread(target=sing, args=(10, ), kwargs={b: 100,c: 100})

  

 

  

4.2 线程的执行顺序

 

  

import threading

 

  输出为:

  

我是sing
我是dance
我是sing
我是dance
我是dance
我是sing
我是dance我是sing

我是sing
我是dance

 

  

 

  说明:

  从代码和执行结果我们可以看出,多线程程序的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞(Blocked),到sleep结束后,线程进入就绪(Runnable)状态,等待调度。而线程调度将自行选择一个线程执行。上面的代码中只能保证每个线程都运行完整个run函数,但是线程的启动顺序、run函数中每次循环的执行顺序都不能确定。

  

 

  

5. 守护线程

 

  守护线程:如果在程序中将子线程设置为守护线程,则该子线程会在主线程结束时自动退出,设置方式为thread.setDaemon(True),要在thread.start()之前设置,默认是false的,也就是主线程结束时,子线程依然在执行。

  5.1 如下代码,主线程已经exit() 【其实并没有真正结束】,子线程还在继续执行

  

import threading

 

  输出为:

  

test is run: 0
test is run: 1
我 OVER 了
test is run: 2
test is run: 3
test is run: 4
test is run: 5
test is run: 6

 

  

 

  5.2 设置守护线程

  为线程设置守护,如果主线程结束,子线程也随之结束。

  

import threading

 

  输出为:

  

test is run: 0
test is run: 1
我 OVER 了

 

  

 

  参考代码

  

import threading

 

  以上就是Python中线程threading.Thread的使用详解的详细内容,更多关于Python threading.Thread的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: