本文实例讲述了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类库32[多线程同步Lock+RLock+Semaphore+Event]

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

  2. python线程池并发_python 并发编程多线程之进程池/线程池

    一.验证GIL锁的存在 Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行.虽然 Python 解释器中可以"运行"多个线程,但在任意时刻只有一个线程在解释器中运行 ...

  3. python 线程 的类库_python类库32[多线程]

    一 python 多线程 因为CPython的实现使用了Global Interpereter Lock(GIL),使得python中同一时刻只有一个线程在执行,从而简化了python解释器的实现,且 ...

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

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

  5. python 调整灰度图像对比度_Python实现PS图像调整之对比度调整功能示例

    本文实例讲述了Python实现PS图像调整之对比度调整功能.分享给大家供大家参考,具体如下: 这里用 Python 实现 PS 里的图像调整–对比度调整.具体的算法原理如下: (1).nRGB = R ...

  6. python线程卡死问题解决_Python中的多线程:最后一个线程卡住了

    我遇到了一个奇怪的情况,在经历了很多次试射后我还是搞不清楚.我使用多线程(10)来读取url(100),它在大多数情况下都能正常工作,但在某些情况下,它会在最后一个线程上卡住.我等待它看它是否返回,花 ...

  7. python客户端与服务器端_Python实现的FTP通信客户端与服务器端功能示例

    本文实例讲述了Python实现的FTP通信客户端与服务器端功能.分享给大家供大家参考,具体如下: 一 代码 1.服务端代码 import socket import threading import ...

  8. 【Linux C 多线程编程】互斥锁与条件变量

    一.互斥锁 互斥量从本质上说就是一把锁, 提供对共享资源的保护访问. 1) 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态 ...

  9. c# 多线程 --Mutex(互斥锁) 【转】

    互斥锁(Mutex) 互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它. 互斥锁可适用于一个共享资源每次只能被一个线程访问的情况 函数: //创建一个处于未获取状态的互斥锁 Pub ...

最新文章

  1. laravel安装笔记 (转)
  2. @ComponentScan.Filter type的类型
  3. linux,apache,php,mysql常用的查看版本信息的方法
  4. 基于java的线上购物系统的设计与实现_基于javaweb的在线购物系统的设计与实现...
  5. 奥运22日看点:女乒女曲有望夺金 皮划艇全线出击
  6. Java中汉字生成拼音首拼和五笔码实例
  7. XML学习之应用范围
  8. 域名使用https访问配置
  9. 中国邮路算法(中国邮递员问题)(详细)
  10. ddns文件服务器,DDNS基础配置
  11. CF1296E1——String Coloring (easy version)
  12. Enhancing the Transferability of Adversarial Attacks through Variance Runing
  13. 阿里云视频上传到抖音服务器
  14. 拼多多客户差评回复话术
  15. Nacos只发现不注册
  16. 技术 | 脑电的现在与未来
  17. 使用fiddler代替charles将react中的axios请求重定向到本地文件,兼容谷歌浏览器chrome
  18. IT运维的几个关键绩效指标
  19. 学习vue源码(14)就慢慢由表入里学习diff
  20. 点击内容进行查询详情

热门文章

  1. LINUX下邮件服务器
  2. 日记 [2007年01月24日]服务器加强安全
  3. golang sync.Map 使用
  4. php5.5.9 新特性,php,_PHP 5.5.9版本中COOKIE的奇怪现象,php - phpStudy
  5. python seek tell_Python指针seektell详解
  6. Shell中常用的通配符
  7. linux命令行ps1变量_利用Shell中变量PS1定制Linux Shell命令主提示符
  8. pythin怎么根据月份获取月初和月末_信息流是什么?到底应该怎么去做?
  9. c语言文件查找函数fread,文件函数fread
  10. mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序