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获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
简单了解OpenCV是个什么东西
Nov 10 Python
PyQT实现多窗口切换
Apr 20 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
python并发和异步编程实例
Nov 15 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
通过实例解析python描述符原理作用
Jan 22 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 Python
用python修改excel表某一列内容的操作方法
Jun 11 Python
Python中递归以及递归遍历目录详解
Oct 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
PHP新手上路(十三)
2006/10/09 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP闭包实例解析
2014/09/08 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
PHP 实现重载
2021/03/09 PHP
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python新手学习使用库
2020/06/11 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
python 实现简易的记事本
2020/11/30 Python
scrapy头部修改的方法详解
2020/12/06 Python
vue项目实现分页效果
2021/03/24 Vue.js
4s客服专员岗位职责
2013/12/01 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
心理学专业求职信
2014/06/16 职场文书
中国梦团日活动总结
2014/07/07 职场文书
施工现场安全管理制度
2015/08/05 职场文书
python 命令行传参方法总结
2021/05/25 Python
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
Redis 异步机制
2022/05/15 Redis