Python多线程threading创建及使用方法解析


Posted in Python onJune 17, 2020

一、线程创建方法

1. 普通创建

import threading
def run(name):
  for i in range(3):
  print(name)
if __name__ == '__main__':
  t1 = threading.Thread(target=run, args=("t1",))
  t2 = threading.Thread(target=run, args=("t2",))
  t1.start()
  t2.start()

--------------------------------------------
t1
t2
t2
t1
t2
t1

2. 自定义线程类

import threading
class MyThread(threading.Thread):
  def __init__(self, name):
    super(MyThread, self).__init__()
    self.name = name
  def run(self):
    for i in range(3):
      print(self.name)
if __name__ == "__main__":
  t1 = MyThread("t1")
  t2 = MyThread("t2")
  t1.start()
  t2.start()

二、线程的使用

1.守护线程

子线程会随着主线程的结束而结束

t = threading.Thread(target=run, args=("t1",))
t.setDaemon(True) # 把子进程设置为守护线程,必须在start()之前设置
t.start()

2.主线程等待子线程结束

t = threading.Thread(target=run, args=("t1",))
t.setDaemon(True)
t.join() # 设置主线程等待子线程结束
t.start()

3.互斥锁

from threading import Thread,Lock
n = 10
def run():
  global n
  locker.acquire()
  n -= 1
  locker.release()

if __name__ == '__main__':
  locker = Lock()
  t1 = Thread(target=run)
  t2 = Thread(target=run)
  t1.start()
  t2.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现数通设备端口使用情况监控实例
Jul 15 Python
Python使用getpass库读取密码的示例
Oct 10 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python使用KNN算法识别手写数字
Apr 25 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
Python PyCharm如何进行断点调试
Jul 05 Python
基于python调用psutil模块过程解析
Dec 20 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 Python
Python 用__new__方法实现单例的操作
Dec 11 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
Python偏函数Partial function使用方法实例详解
Jun 17 #Python
详解Python IO口多路复用
Jun 17 #Python
基于keras中的回调函数用法说明
Jun 17 #Python
Python学习之路安装pycharm的教程详解
Jun 17 #Python
Python闭包及装饰器运行原理解析
Jun 17 #Python
浅谈Python协程
Jun 17 #Python
使用K.function()调试keras操作
Jun 17 #Python
You might like
mysql5写入和读出乱码解决
2006/11/25 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
pygame学习笔记(4):声音控制
2015/04/15 Python
python绘制简单彩虹图
2018/11/19 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
django的ORM模型的实现原理
2019/03/04 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Django中template for如何使用方法
2021/01/31 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
数控专业大学生的自我鉴定
2013/11/13 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
个人收入证明模板
2014/09/18 职场文书
病危通知书样本
2015/04/17 职场文书
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js