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 相关文章推荐
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
在python中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
python实现蒙特卡罗方法教程
Jan 28 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
Opencv求取连通区域重心实例
Jun 04 Python
python编程的核心知识点总结
Feb 08 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 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
使用无限生命期Session的方法
2006/10/09 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
深入理解PHP中的global
2014/08/19 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
js简单实现交换Li的值
2014/05/22 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
js仿360开机效果
2019/12/26 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python实现的系统实用log类实例
2015/06/30 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Django中间件实现拦截器的方法
2018/06/01 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
英国行业制服供应商:Alexandra
2019/09/14 全球购物
关于保护环境的标语
2014/06/09 职场文书
舞蹈专业求职信
2014/06/13 职场文书
商务经理岗位职责
2014/08/03 职场文书
学校联谊协议书
2014/09/16 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python