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程序与C++程序的联合使用
Apr 07 Python
Python的动态重新封装的教程
Apr 11 Python
flask入门之表单的实现
Jul 18 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
详解python校验SQL脚本命名规则
Mar 22 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
python绘制BA无标度网络示例代码
Nov 21 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
使用Python pip怎么升级pip
Aug 11 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python中的sys模块和os模块
Mar 20 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+mysql留言本源码
2009/11/11 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
Python中的pack和unpack的使用
2018/03/12 Python
10个Python小技巧你值得拥有
2018/09/29 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
Python数组并集交集补集代码实例
2020/02/18 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
python Pexpect模块的使用
2020/12/25 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
高级护理专业毕业生推荐信
2013/12/25 职场文书
大型晚会策划方案
2014/02/06 职场文书
作文批改评语大全
2014/04/23 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
拾金不昧感谢信
2015/01/21 职场文书