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中pygame的mouse鼠标事件用法实例
Nov 11 Python
基于数据归一化以及Python实现方式
Jul 11 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
python lxml中etree的简单应用
May 10 Python
如何通过python画loss曲线的方法
Jun 26 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
详解Python3定时器任务代码
Sep 23 Python
Django使用Profile扩展User模块方式
May 14 Python
Django实现内容缓存实例方法
Jun 30 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 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
生成缩略图
2006/10/09 PHP
Adodb的十个实例(清晰版)
2006/12/31 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
Python super()方法原理详解
2020/03/31 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
董事长秘书职责
2014/01/31 职场文书
学雷锋宣传标语
2014/06/25 职场文书
反对邪教标语
2014/06/30 职场文书
人才市场接收函
2015/01/30 职场文书
大学学生会辞职信
2015/05/13 职场文书
导游词之千岛湖
2019/09/23 职场文书
Python图像处理之图像拼接
2021/04/28 Python