Python实现的多线程同步与互斥锁功能示例


Posted in Python onNovember 30, 2017

本文实例讲述了Python实现的多线程同步与互斥锁功能。分享给大家供大家参考,具体如下:

#! /usr/bin/env python
#coding=utf-8
import threading
import time
'''
#1、不加锁
num = 0
class MyThread(threading.Thread):
  def run(self):
    global num
    time.sleep(1) #一定要sleep!!!
    num = num + 1
    msg = self.name + ' num is ---- ' + str(num)
    print msg
def test():
  for i in range(10):
    s = MyThread() #实例化一个Thread对象,每个Thread对象代表着一个线程
    s.start() #通过start()方法,开始线程活动
'''
#'''
class MyThread(threading.Thread):
  def run(self):
    for i in range(3):
      time.sleep(1)
      msg = self.name+' @ '+str(i)
      print msg
def test():
  for i in range(5):
    t = MyThread()
    t.start()
#'''
'''
#2、加锁
num = 0 #多个线程共享操作的数据
mu = threading.Lock() #创建一个锁
class MyThread(threading.Thread):
  def run(self):
    global num
    time.sleep(1)
    if mu.acquire(True): #获取锁状态,一个线程有锁时,别的线程只能在外面等着
      num = num + 1
      msg = self.name + ' num is ---- ' + str(num)
      print msg
      mu.release() #释放锁
def test():
  for i in range(10):
    s = MyThread()
    s.start()
'''
if __name__ == '__main__':
  test()

运行结果:

Python实现的多线程同步与互斥锁功能示例

再分别运行注释中的每一部分代码:

1. 不加锁:

Python实现的多线程同步与互斥锁功能示例

2. 加锁:

Python实现的多线程同步与互斥锁功能示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python和C语言混合编程实例
Jun 04 Python
Python常用的日期时间处理方法示例
Feb 08 Python
python检测某个变量是否有定义的方法
May 20 Python
python中模块的__all__属性详解
Oct 26 Python
Python中的默认参数实例分析
Jan 29 Python
python3实现windows下同名进程监控
Jun 21 Python
Python2包含中文报错的解决方法
Jul 09 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
Python + Flask 实现简单的验证码系统
Oct 01 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
Django实现翻页的示例代码
May 24 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 #Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 #Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 #Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 #Python
Python科学画图代码分享
Nov 29 #Python
Python中Scrapy爬虫图片处理详解
Nov 29 #Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 #Python
You might like
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
详解webpack babel的配置
2018/01/09 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
python实现简易淘宝购物
2019/11/22 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
写求职信要注意什么问题
2014/04/12 职场文书
学习心理学的体会
2014/11/07 职场文书
国富论读书笔记
2015/06/26 职场文书
小学数学教师研修日志
2015/11/13 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang