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中处理字符串之ljust()方法的使用简介
May 19 Python
简单实现python爬虫功能
Dec 31 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
python机器人行走步数问题的解决
Jan 29 Python
Python获取指定字符前面的所有字符方法
May 02 Python
Python 创建空的list,以及append用法讲解
May 04 Python
Python中的函数作用域
May 07 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
Python占用的内存优化教程
Jul 28 Python
PyQt5实现登录页面
May 30 Python
Python使用protobuf序列化和反序列化的实现
May 19 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
PDO::setAttribute讲解
2019/01/29 PHP
PHP实现简易图形计算器
2020/08/28 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
javascript各种复制代码收集
2008/09/20 Javascript
js每次Title显示不同的名言
2008/09/25 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
深入理解Node module模块
2018/03/26 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
vuex的使用步骤
2021/01/06 Vue.js
python生成随机mac地址的方法
2015/03/16 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python 伯努利分布详解
2020/02/25 Python
python 一维二维插值实例
2020/04/22 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
电子专业推荐信范文
2013/11/18 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
青年教师培训方案
2014/02/06 职场文书
初中军训感想300字
2014/03/05 职场文书
集中采购方案
2014/06/10 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
教师工作态度自我评价
2015/03/05 职场文书
员工福利申请报告
2015/05/15 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书