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+django+sql学生信息管理后台开发
Jan 11 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
Python命名空间的本质和加载顺序
Dec 17 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
Python里字典的基本用法(包括嵌套字典)
Feb 27 Python
python字符串查找函数的用法详解
Jul 08 Python
python 随机森林算法及其优化详解
Jul 11 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
使用openCV去除文字中乱入的线条实例
Jun 02 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 Python
Python中return函数返回值实例用法
Nov 19 Python
Python时间操作之pytz模块使用详解
Jun 14 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 Socket 编程
2010/04/09 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
php-app开发接口加密详解
2018/04/18 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
Google韩国首页图标动画效果
2007/08/26 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
Django中URLconf和include()的协同工作方法
2015/07/20 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
Python如何省略括号方法详解
2020/03/21 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
年终自我鉴定
2013/10/09 职场文书
主题酒店策划书
2014/01/28 职场文书
小学教师办公室制度
2014/02/03 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
考试没考好检讨书
2015/05/06 职场文书
小学运动会前导词
2015/07/20 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL