本文实例讲述了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()

运行结果:

再分别运行注释中的每一部分代码:

1. 不加锁:

2. 加锁:

希望本文所述对大家Python程序设计有所帮助。

python同步锁和互斥锁的区别_Python实现的多线程同步与互斥锁功能示例相关推荐

  1. python线程同步锁_Python实现的多线程同步与互斥锁功能示例

    本文实例讲述了Python实现的多线程同步与互斥锁功能.分享给大家供大家参考,具体如下: #! /usr/bin/env python #coding=utf-8 import threading i ...

  2. python 线程 的类库_python类库32[多线程同步Lock+RLock+Semaphore+Event]

    多线程基础:python类库32[多线程同步] 一 多线程同步 由于CPython的python解释器在单线程模式下执行,所以导致python的多线程在很多的时候并不能很好地发挥多核cpu的资源.大部 ...

  3. python实例方法、类方法、静态方法的区别_Python 实例方法、类方法、静态方法的区别与作用...

    Python 实例方法.类方法.静态方法的区别与作用 一.总结 一句话总结: 实例方法:第一个参数必须是实例对象,该参数名一般约定为"self",通过它来传递实例的属性和方法(也可 ...

  4. python中的return和print的区别_python中return和print的区别(详细)

    Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...

  5. python中单引号和双引号的区别_python中单引号和双引号的区别

    在Python当中表达字符串既可以使用单引号,也可以使用双引号,那两者有什么区别吗? python单引号和双引号的区别 简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符 ...

  6. python 输入文件名查找_Python实现的根据文件名查找数据文件功能示例

    本文实例讲述了Python实现的根据文件名查找数据文件功能.分享给大家供大家参考,具体如下: #-*- coding: UTF-8 -*- import os import shutil AllFil ...

  7. python 获取键盘输入、同时有超时的功能_python 获取键盘输入,同时有超时的功能示例...

    如下所示: ''' ###get keyboard input and timeout =5 import sys, time, msvcrt def readInput( caption, defa ...

  8. python查找文件名_Python实现的根据文件名查找数据文件功能示例

    这篇文章主要介绍了Python实现的根据文件名查找数据文件功能,涉及Python针对文件与目录的遍历.查询等相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现的根据文件名查找数据文件功 ...

  9. python更改图片中物体的颜色_Python实现去除图片中指定颜色的像素功能示例

    Python实现去除图片中指定颜色的像素功能示例 本文实例讲述了Python实现去除图片中指定颜色的像素功能.分享给大家供大家参考,具体如下: 这里用python去除图片白色像素 需要python和p ...

最新文章

  1. 剑指offer:不用加减乘除做加法
  2. Apache软件基金会宣布Apache Unom成为顶级项目
  3. 2018 Spring Team Contest B
  4. 实验分享:用Python生成个性化二维码
  5. spring social_Spring Social入门–第2部分
  6. ihtml2document能不能根据id获取dom_一段监视 DOM 的神奇代码
  7. VS中监视窗口,即时窗口和输出窗口的使用
  8. Java Core系列之ConcurrentHashMap实现(JDK 1.7)
  9. BZOJ3592 : Architext
  10. PyTorch 1.0 中文文档:torch.distributed
  11. php header什么意思,php header的用法是什么
  12. centos7.2如何升级到centos7.3最新版本
  13. 华为平板m5鸿蒙,华为平板M5系列发布:搭载麒麟960 售价2088元起
  14. 2019FME博客大赛——FME在室内地图数据构建中的应用
  15. DataFormatString 的使用
  16. (转)量化投资发展史:野蛮、乱象、科学
  17. Rayman的绝顶之路——Leetcode每日一题打卡7
  18. kali kda安装 linux_KDA-无损音乐下载
  19. 一级建造师能挂靠到三级资质的企业吗?
  20. OC和swift混合工程更新库时报:target has transitive dependencies that include statically linked binaries

热门文章

  1. 历史上线程的3种实现模型
  2. WinSock五种I/O模型的性能分析
  3. caffe学习(三):caffe开发环境安装(Ubuntu)
  4. python文件编码与解码_Python读取文件编码解码问题
  5. protobuf中 repeated[Ptr]Field的序列化
  6. Javascript - Vue - webpack
  7. Aix 6.1下安装Oracle11g详细文档
  8. Sql Server 分区演练
  9. 机房合作--驼峰命名法
  10. mac下简单绘图工具