Python 是一种面向对象解释型计算机程序设计语言, 由 Guido van Rossum 于 1989 年底发明, 第一个公开发行版发行于 1991 年 Python 语法简洁而清晰, 具有丰富和强大的类库它常被昵称为胶水语言, 它能够把用其他语言制作的各种模块 (尤其是 C/C++) 很轻松地联结在一起
这篇文章主要介绍了 Python 实现的多线程同步与互斥锁功能, 涉及 Python 多线程及锁机制相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 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 程序设计有所帮助
来源: http://www.phperz.com/article/18/0215/361517.html