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 Web框架Flask信号机制(signals)介绍
Jan 01 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
Python多层装饰器用法实例分析
Feb 09 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
python对csv文件追加写入列的方法
Aug 01 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
python 调试冷知识(小结)
Nov 11 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
python与idea的集成的实现
Nov 20 Python
Python对excel的基本操作方法
Feb 18 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
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
php实现记事本案例
2020/10/20 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
Python中列表(list)操作方法汇总
2014/08/18 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
《学会合作》教学反思
2014/04/12 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
学风建设演讲稿
2014/09/12 职场文书
党员个人对照检查材料
2014/10/01 职场文书
营销与策划实训报告
2014/11/05 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL
2022微信温控新功能上线
2022/05/09 数码科技
python标准库ElementTree处理xml
2022/05/20 Python
使用Apache Camel表达REST服务的方法
2022/06/10 Servers