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的绘图工具matplotlib使用实例
Jul 03 Python
简单介绍Python中的struct模块
Apr 28 Python
python实现自动重启本程序的方法
Jul 09 Python
在Django的模板中使用认证数据的方法
Jul 23 Python
Python中一行和多行import模块问题
Apr 01 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
python 获取图片分辨率的方法
Jan 08 Python
python代码如何实现余弦相似性计算
Feb 09 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
python 爬取腾讯视频评论的实现步骤
Feb 18 Python
深度学习tensorflow基础mnist
Apr 14 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更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python读取word文本操作详解
2018/01/22 Python
将python代码和注释分离的方法
2018/04/21 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Python远程方法调用实现过程解析
2020/07/28 Python
python实现移动木板小游戏
2020/10/09 Python
css3学习心得分享
2013/08/19 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
2014大学生学生会工作总结
2014/12/19 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python