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 29 Python
在Python程序中操作文件之flush()方法的使用教程
May 24 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
使用python实现个性化词云的方法
Jun 16 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
python中的闭包函数
Feb 09 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
python找出完数的方法
Nov 12 Python
python3.7 sys模块的具体使用
Jul 22 Python
python 计算两个列表的相关系数的实现
Aug 29 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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
php制作动态随机验证码
2015/02/12 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
php经典算法集锦
2015/11/14 PHP
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
python 循环遍历字典元素的简单方法
2016/09/11 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
Python接口开发实现步骤详解
2020/04/26 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
园长自我鉴定
2013/10/06 职场文书
应聘教师求职信
2014/07/19 职场文书
小学安全汇报材料
2014/08/14 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
捐书活动倡议书
2015/04/27 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
Django+Celery实现定时任务的示例
2021/06/23 Python
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫