一、 例子:我们对传参是有要求的必须传入一个元组,否则报错

import _thread as thread

import time

def loop1(in1):

print("Start loop 1 at:", time.ctime())

print("我是参数", in1)

time.sleep(4)

print("End loop 1 at:", time.ctime())

def loop2(in1, in2):

print("Start loop 2 at:", time.ctime())

print("我是参数", in1, "和参数 ", in2)

time.sleep(4)

print("End loop 1 at:", time.ctime())

def main():

print("Starting at:", time.ctime())

thread.start_new_thread(loop1, ("liuming", ))

# 上面我们传参的时候, 我用的是:(“ liuming”), 这里面是没有逗号的, 结果编译报错, 告诉我, 这里面必须传入元组

# 因此, 我才在里面加了一个逗号, 使其变成一个元组

thread.start_new_thread(loop2, ("zhanglei", "liuhao"))

print("All done at:", time.ctime())

if __name__ == "__main__":

main()

while True:

time.sleep(10)

二、threading的使用

直接利用threading.Thread生成Thread的实例

格式:

t= threading.Thread(target=函数体,args=(,))#参数args要传递元组

​t.start()#启动多线程

t.join()#等待多线程执行完成

def main():

print("Start at :", time.ctime())

t1 = threading.Thread(target = loop1, args = ("王老大", ))

t1.start()# 启动多线程

t2 = threading.Thread(target = loop2, args = ("孙子", "好吗"))

t2.start()

t1.join()

t2.join()

print("End at :", time.ctime())

if __name__ == "__main__":

main()

从上面可以看出来,我们启动了两个线程,但是这两个线程执行完了才打印​最后一个结束语句。

2.守护线程

​格式:线程.setDaemon(True)

作用​:

(1)如果在程序中将子线程设置为守护线程,则子线程会在主线程结束的时候自动退出​;

(2)一般认为,守护线程不重要或者不允许脱离子线程而独立运行;

(3)守护线程能否有效果和环境有关系

注意点:该语句一定要写在start语句之前,否则就会把子程序无限时间挂起,运行报错,​如:

def fun():

print("Start fun")

time.sleep(2)

print("End fun")

​print('Main thread')

t3 = threading.Thread(target = fun, args = ())

t3.setDaemon(True)

t3.start()

time.sleep(1)

print("Main thread End")

​解释:我们可以看出主线程结束后(即打印完了”Main thread End")后,我们的子线程的最后一个打印没有出来,程序就结束了,说明主线程结束,子线程无论执行到哪里都会被kill掉,和我们的预期一样。

三、源码

d24_2_usage_of_threading.py

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python threading_Python threading的使用方法解析相关推荐

  1. python threading_Python threading

    最新项目 命名线程 这是一种将python中设置的线程名传播到系统的技巧. warning:这仅用于测试/调试目的.不要在生产中运行. 问题 您可以用python命名线程,如下所示: import t ...

  2. python类中方法的执行顺序-python – 新式类中的方法解析顺序(MRO)?

    在Python in a Nutshell(第2版)一书中有一个使用的例子 旧样式类,用于演示如何以经典分辨率顺序解析方法 它与新订单有何不同. 我通过重写新样式的示例尝试了相同的示例,但结果与使用旧 ...

  3. python多继承顺序_Python多重继承方法解析顺序(MRO构建算法)

    分界 python的MRO算法有新旧两种,但并不是以python2和python3为界,具体的分隔为:在python2中如果定义类的时候没有指定父类是object,即定义为 class A: pass ...

  4. 【python中selenium八大定位方法解析】

    1.python模拟人,打开浏览器,操做页面,验证系统的功能是否正确() 2.web自动化应用场景:1.冒烟测试(稳定的业务场景,主流程确认系统可用) 2.回归测试(稳定的业务场景,页面改的小) 场景 ...

  5. python读数据-python读取各种文件数据方法解析

    python读取.txt(.log)文件 ..xml 文件 .excel文件数据,并将数据类型转换为需要的类型,添加到list中详解 1.读取文本文件数据(.txt结尾的文件)或日志文件(.log结尾 ...

  6. Python 求素数之多方法解析

    素数简介:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 素数 1.素数的普通解法 直接上代码 import math L=[2] n=int(input("请输入所 ...

  7. python中reversed是什么意思_Python reversed函数及使用方法解析

    Python reversed函数及使用方法解析 有些时候,程序需要进行反向遍历,此时可通过 reversed() 函数,该函数可接收各种序列(元组.列表.区间等)参数,然后返回一个"反序排 ...

  8. python的reversed函数实质_Python reversed函数及使用方法解析

    Python reversed函数及使用方法解析 发布时间:2020-09-09 01:07:18 来源:脚本之家 阅读:74 有些时候,程序需要进行反向遍历,此时可通过 reversed() 函数, ...

  9. python怎么调用c语言_Python调用C语言程序方法解析

    Python调用C语言程序方法解析 首先我们需要将编写好的c程序文件编译为动态库文件(后缀名为.so) 使用下面的命令: gcc 原文件名.c -shared -o 新文件名.so 然后在python ...

最新文章

  1. 机器学习如何彻底改变游戏中的物理模拟
  2. oracle返回表id,在Oracle的函数中,返回表类型的语句
  3. 计算机硬件基础-存取方式
  4. 领导力十律_关于开放领导力的10个最受欢迎的故事
  5. 2020牛客多校训练1 I 1or2(拆点拆边带花树一般图最大匹配)
  6. UC浏览器去广告、联网、升级(支持新版8.1)
  7. vue 如何使用md5密码加密
  8. Python的基础语法及使用
  9. python百度地图标注自己的店名_百度地图上怎么显示店名 百度地图标注店名方法...
  10. 记一次修改开源1078音视频服务器兼容粤标音视频的变更
  11. 交换机与路由器工作原理
  12. java 连接wtc_Tuxedo通过WTC调用weblogic配置
  13. System Verilog简要笔记
  14. Linux学习笔记(七)创建文件
  15. 中文词性标注的简单实现
  16. ASM027: 汇编常用工具
  17. 丁小平微积分研究成果刍议
  18. HGAME 2023 Week1
  19. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java智能线上教育mo0l5
  20. C语言数据交换算法和伪指令,补充:单片机c语言与汇编语言混合编程.ppt

热门文章

  1. c语言函数写巴德歌赫猜想,{转帖}我们还有创造力么
  2. mysql注解批量添加mybatis_Mybatis注解方式 实现批量插入数据库
  3. 源码编译altas mysql_Atlas的安装
  4. switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句
  5. mysqldump备份原理及注意事项
  6. mysql主从与读写分离_MySQL主从复制与读写分离
  7. java string contains indexof,java.lang.String.contains()方法实例
  8. matlab fft 功率谱,matlab实现功率谱估计,关于FFT点数选取到底什么标准?
  9. Mysql允许root用户远程访问
  10. 服务器系统盘单独硬盘,我的服务器今天加了个硬盘,可以实现双系统吗?