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在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python中函数参数调用方式分析
Aug 09 Python
Python中的asyncio代码详解
Jun 10 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
Django视图扩展类知识点详解
Oct 25 Python
如何使用repr调试python程序
Feb 28 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
python函数指定默认值的实例讲解
Mar 29 Python
Python合并多张图片成PDF
Jun 09 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
一个用php3编写的简单计数器
2006/10/09 PHP
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
关于递归运算的顺序测试代码
2011/11/30 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
python读取Android permission文件
2013/11/01 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
django-csrf使用和禁用方式
2020/03/13 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
详解Python 最短匹配模式
2020/07/29 Python
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
中学生寄语大全
2014/04/03 职场文书
2016公司年会通知范文
2015/04/25 职场文书
行政答辩状范文
2015/05/21 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
图文详解nginx日志切割的实现
2022/01/18 Servers
nginx 添加http_stub_status_module模块
2022/05/25 Servers