Python threading的使用方法解析

 更新时间:2019年08月28日 11:00:19   作者:心悦君兮君不知-睿  
这篇文章主要介绍了Python threading的使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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

地址:https://github.com/ruigege66/Python_learning/blob/master/d24_2_usage_of_threading.py

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

相关文章

  • Python实现多行注释的另类方法

    Python实现多行注释的另类方法

    这篇文章主要介绍了Python实现多行注释的另类方法,本文使用的是Python多行文本功能来另类的实现Python的多行注释,需要的朋友可以参考下
    2014-08-08
  • 跟老齐学Python之玩转字符串(2)更新篇

    跟老齐学Python之玩转字符串(2)更新篇

    本文是玩转字符串的续篇,继续对字符串的连接方法进行介绍,以及字符串复制、字符串长度、字符大小写的转换。非常不错的文章,希望对大家有所帮助
    2014-09-09
  • 利用Python requests库爬取高德地图全国地铁站点信息

    利用Python requests库爬取高德地图全国地铁站点信息

    requests 模块是 python 基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库,它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求,这篇文章主要介绍了利用Python requests库爬取高德地图全国地铁站点信息,需要的朋友可以参考下
    2024-03-03
  • Python实现甘特图绘制的示例详解

    Python实现甘特图绘制的示例详解

    相信在平常实际工作当中,需要对整体的项目做一个梳理,这时如果有一个网页应用能够对整体项目有一个可视化页面的展示,是不是会对你的实际工作有所帮助呢?今天小编就通过Python+Streamlit框架来绘制甘特图并制作可视化大屏,需要的可以参考一下
    2023-04-04
  • python源码剖析之PyObject详解

    python源码剖析之PyObject详解

    Python实现了完全的面向对象的语言特性,所有的类均继承自object基类,对应着实现层面的PyObject.为了实现多态的特性,Python的实现过程维护了一个类型对象系统,用来记录类型信息和维护类的函数成员,本文为大家详细介绍了PyObject,需要的朋友可以参考下
    2021-05-05
  • python利用pymysql和openpyxl实现操作MySQL数据库并插入数据

    python利用pymysql和openpyxl实现操作MySQL数据库并插入数据

    这篇文章主要为大家详细介绍了如何使用Python连接MySQL数据库,并从Excel文件中读取数据,将其插入到MySQL数据库中,有需要的小伙伴可以参考一下
    2023-10-10
  • Python疫情数据可视化分析

    Python疫情数据可视化分析

    这篇文章主要介绍了Python疫情数据可视化分析,本数据集主要涉及到全球疫情统计,包括确诊、治愈、死亡、时间、国家、地区等信息,需要的朋友可以参考一下
    2022-07-07
  • 基于Python实现人脸识别相似度对比功能

    基于Python实现人脸识别相似度对比功能

    人脸识别技术是一种通过计算机对人脸图像进行分析和处理,从而实现自动识别和辨认人脸的技术,随着计算机视觉和模式识别领域的快速发展,人脸识别技术取得了长足的进步,本文给大家介绍了基于Python实现人脸识别相似度对比功能,感兴趣的朋友可以参考下
    2024-01-01
  • Django接受前端数据的几种方法总结

    Django接受前端数据的几种方法总结

    下面小编就为大家带来一篇Django接受前端数据的几种方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • python利用pd.cut()和pd.qcut()对数据进行分箱操作

    python利用pd.cut()和pd.qcut()对数据进行分箱操作

    本文主要介绍了python利用pd.cut()和pd.qcut()对数据进行分箱操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论