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实现的解析crontab配置文件代码
Jun 30 Python
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
python实现画圆功能
Jan 25 Python
简单实现python聊天程序
Apr 01 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
Django渲染Markdown文章目录的方法示例
Jan 02 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
如何通过Python实现标签云算法
Jul 02 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 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
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
PHP7.0版本备注
2015/07/23 PHP
显示、隐藏密码
2006/07/01 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
基于jquery的表格排序
2010/09/11 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
详解jQuery中的事件
2016/12/14 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
python实现计算资源图标crc值的方法
2014/10/05 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
品质主管的岗位职责
2013/12/04 职场文书
六十大寿答谢词
2014/01/12 职场文书
策划创业计划书
2014/02/06 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
C++程序员求职信范文
2014/04/14 职场文书
领导班子对照检查材料
2014/09/22 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
给朋友的道歉短信
2015/05/12 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL