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和bash统计CPU利用率的方法
Jul 10 Python
详解Python import方法引入模块的实例
Aug 02 Python
python遍历序列enumerate函数浅析
Oct 17 Python
Python实现找出数组中第2大数字的方法示例
Mar 26 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
深入理解Django自定义信号(signals)
Oct 15 Python
浅谈python中get pass用法
Mar 19 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
Apr 17 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
Python词云的正确实现方法实例
May 08 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生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
PHP之短标签开启设置
2013/06/17 PHP
PHP错误机制知识汇总
2016/03/24 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
jQuery自定义多选下拉框效果
2017/06/19 jQuery
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
Python实现AI换脸功能
2020/04/10 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
上课迟到检讨书
2014/01/19 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
Django基础CBV装饰器和中间件
2022/03/22 Python