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中的私有属性
Aug 21 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
Python实现的生成格雷码功能示例
Jan 24 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
PyQt5每天必学之拖放事件
Aug 27 Python
基于python实现名片管理系统
Nov 30 Python
python实现网页自动签到功能
Jan 21 Python
Python检查ping终端的方法
Jan 26 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
jupyter notebook 多行输出实例
Apr 09 Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 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
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
5个javascript的数字格式化函数分享
2011/12/07 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
python日志logging模块使用方法分析
2019/05/23 Python
python3 深浅copy对比详解
2019/08/12 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
Java面试题及答案
2012/09/08 面试题
shell程序中如何注释
2012/01/28 面试题
Python里面如何拷贝一个对象
2014/02/17 面试题
应届生煤化工求职信
2013/10/21 职场文书
单位活动策划方案
2014/08/17 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
全陪导游词
2015/02/04 职场文书
入党积极分子个人总结
2015/03/02 职场文书
理想国读书笔记
2015/06/25 职场文书
如何撰写促销方案?
2019/07/05 职场文书
小学生节约用水倡议书
2019/08/12 职场文书