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 相关文章推荐
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
对python中assert、isinstance的用法详解
Nov 27 Python
从pandas一个单元格的字符串中提取字符串方式
Dec 17 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
Python获取android设备cpu和内存占用情况
Nov 15 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
memcache命令启动参数中文解释
2014/01/13 PHP
使用URL传输SESSION信息
2015/07/14 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
python版本的读写锁操作方法
2016/04/25 Python
Python实现图片转字符画的示例
2017/08/22 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
学习python分支结构
2019/05/17 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
春节活动策划方案
2014/01/24 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
预备党员转正意见
2015/06/01 职场文书