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开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
Python实现的归并排序算法示例
Nov 21 Python
python3+PyQt5实现拖放功能
Apr 24 Python
python解决字符串倒序输出的问题
Jun 25 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
python实现换位加密算法的示例
Oct 14 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
Python 如何创建一个简单的REST接口
Jul 30 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教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
php读取csc文件并输出
2015/05/21 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
python如何查看系统网络流量的信息
2016/09/12 Python
python协程之动态添加任务的方法
2019/02/19 Python
在Python中使用Neo4j的方法
2019/03/14 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
初中教师个人工作总结
2015/02/10 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
办公室禁烟通知
2015/04/23 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
高二语文教学反思
2016/02/16 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL