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 ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
Python爬取365好书中小说代码实例
Feb 28 Python
基于Python测试程序是否有错误
May 16 Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
python自动生成sql语句的脚本
Feb 24 Python
浅谈Python数学建模之固定费用问题
Jun 23 Python
Python面向对象之成员相关知识总结
Jun 24 Python
python标准库ElementTree处理xml
May 20 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采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
php图片上传类 附调用方法
2016/05/15 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python实现基本线性数据结构
2016/08/22 Python
python django事务transaction源码分析详解
2017/03/17 Python
python 调用钉钉机器人的方法
2019/02/20 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
python 通过文件夹导入包的操作
2020/06/01 Python
python读取xml文件方法解析
2020/08/04 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
超市业务员岗位职责
2013/12/05 职场文书
教师研修随笔感言
2014/01/23 职场文书
公司联欢会策划方案
2014/05/19 职场文书
年检委托书
2014/08/30 职场文书
七一建党节演讲稿
2014/09/11 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书