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中的filter()函数的用法
Apr 27 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
Python内置模块logging用法实例分析
Feb 12 Python
Flask框架各种常见装饰器示例
Jul 17 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
Jun 27 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
Aug 22 Python
Python csv模块使用方法代码实例
Aug 29 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
python判断正负数方式
Jun 03 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
python em算法的实现
Oct 03 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设计模式 注册表模式
2012/02/05 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
岗位竞聘演讲稿
2014/01/10 职场文书
四年大学自我鉴定
2014/02/17 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
小学教师自我评价
2015/03/04 职场文书
2015大一新生军训感言
2015/08/01 职场文书
python中mongodb包操作数据库
2022/04/19 Python