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 相关文章推荐
动态创建类实例代码
Oct 07 Python
Python实现的几个常用排序算法实例
Jun 16 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python networkx 根据图的权重画图实现
Jul 10 Python
Python代码块及缓存机制原理详解
Dec 13 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
Django choices下拉列表绑定实例
Mar 13 Python
Python爬虫制作翻译程序的示例代码
Feb 22 Python
如何用Python和JS实现的Web SSH工具
Feb 23 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 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源代码
2006/10/09 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
Python科学计算之Pandas详解
2017/01/15 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
py-charm延长试用期限实例
2019/12/22 Python
python动态规划算法实例详解
2020/11/22 Python
杭州-DOTNET笔试题集
2013/09/25 面试题
迟到检讨书5000字
2014/01/31 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
千与千寻观后感
2015/06/04 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
如何Tomcat中使用ipv6地址
2022/05/06 Servers