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中的JSON模块
Apr 08 Python
Python and、or以及and-or语法总结
Apr 14 Python
在Python下尝试多线程编程
Apr 28 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
常见的python正则用法实例讲解
Jun 21 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Python tkinter的grid布局及Text动态显示方法
Oct 11 Python
彻底理解Python中的yield关键字
Apr 01 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
pytorch 如何使用batch训练lstm网络
May 28 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+mysql 实现身份验证代码
2010/03/24 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
vue实例的选项总结
2020/06/09 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
python之Socket网络编程详解
2016/09/29 Python
python模糊图片过滤的方法
2018/12/14 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python初学者常见错误详解
2019/07/02 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
中餐厅主管的职责范文
2014/02/04 职场文书
端午节活动策划方案
2014/03/09 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
2014年派出所工作总结
2014/11/21 职场文书
万里长城导游词
2015/01/30 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL