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 相关文章推荐
浅谈MySQL中的触发器
May 05 Python
Python函数的周期性执行实现方法
Aug 13 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
解决Python下imread,imwrite不支持中文的问题
Dec 05 Python
对python字典过滤条件的实例详解
Jan 22 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
pymysql模块的操作实例
Dec 17 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
简单介绍django提供的加密算法
Dec 18 Python
Pytorch之finetune使用详解
Jan 18 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
JS对象与json字符串格式转换实例
2014/10/28 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
Python中属性和描述符的正确使用
2016/08/23 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
python删除字符串中指定字符的方法
2018/08/13 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python Scrapy框架原理解析
2021/01/04 Python
Python学习之time模块的基本使用
2021/01/17 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
大学生就业自我鉴定
2013/10/26 职场文书
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
个人求职信范文
2014/05/24 职场文书
校长创先争优承诺书
2014/08/30 职场文书
工程部主管岗位职责
2015/02/12 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript