Python threading的使用方法解析


Posted in Python onAugust 28, 2019

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

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)
​

Python threading的使用方法解析

二、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()

Python threading的使用方法解析

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

2.守护线程

​格式:线程.setDaemon(True)

作用​:

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

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

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

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

Python threading的使用方法解析

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")

Python threading的使用方法解析

​解释:我们可以看出主线程结束后(即打印完了”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脚本实现查找webshell的方法
Jul 31 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python实现的数据结构与算法之快速排序详解
Apr 22 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
python3 求约数的实例
Dec 05 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
python使用glob检索文件的操作
May 20 Python
Python实现8种常用抽样方法
Jun 27 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 #Python
Python logging设置和logger解析
Aug 28 #Python
Python shelve模块实现解析
Aug 28 #Python
解决python明明pip安装成功却找不到包的问题
Aug 28 #Python
Python 函数list&read&seek详解
Aug 28 #Python
Python collections模块使用方法详解
Aug 28 #Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 #Python
You might like
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
vue自定义一个v-model的实现代码
2018/06/21 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
python中defaultdict的用法详解
2017/06/07 Python
Python实现的快速排序算法详解
2017/08/01 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
如何利用Python写个坦克大战
2020/11/18 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
如何查找网页漏洞
2016/06/22 面试题
单位成立周年感言
2014/01/26 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
初一军训感言
2015/08/01 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
Android 中的类文件和类加载器详情
2022/06/05 Java/Android