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中使用logging模块代替print(logging简明指南)
Jul 09 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 Python
Python中logging日志的四个等级和使用
Nov 17 Python
python绘图模块之利用turtle画图
Feb 12 Python
Django路由层如何获取正确的url
Jul 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
PHP概述.
2006/10/09 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
python发送HTTP请求的方法小结
2015/07/08 Python
python去掉行尾的换行符方法
2017/01/04 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
就业推荐自我鉴定
2013/10/06 职场文书
企业金融服务方案
2014/06/03 职场文书
学党史心得体会
2014/09/05 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android