Python 3基础教程42-锁

来源:互联网 发布:Laymine java 编辑:程序博客网 时间:2024/05/17 01:03

       前面一篇文章介绍了GIL,提到了锁,也介绍了,Python中执行代码,只能是一个线程执行,等这个线程暂停或者执行结束,才切换到第二个线程开始工作。今天就介绍锁的使用,通过一个例子来介绍。简单来说,我有两个线程,分别做job1和job2,我需要先完成job1,然后去完成job2。那么这个过程,我就需要先锁住线程1,等线程1完成了,我才去解锁,这样就开始做线程2的任务。

import threadingdef job1():    global A, lock    # 开始插入一个锁标记,这个线程已经被锁住了    lock.acquire()    for i in range(10):        A += 1        print('job1', A)    # 等这个线程工作干完了,就释放锁,也就是解锁    lock.release()def job2():    global A, lock    lock.acquire()    for i in range(10):        A += 5        print('job2', A)    lock.release()def exampleFuc():    # 定义一个共享内存,全局变量    global A    A = 0    # 定义一个全局锁    global lock    lock = threading.Lock()    t1 = threading.Thread(target=job1)    t2 = threading.Thread(target=job2)    t1.start()    t2.start()    t1.join()    t2.join()exampleFuc()
运行效果:

============= RESTART: C:\Users\Anthony\Desktop\thread_queue.py =============job1 1job1 2job1 3job1 4job1 5job1 6job1 7job1 8job1 9job1 10job2 15job2 20job2 25job2 30job2 35job2 40job2 45job2 50job2 55job2 60>>> 


0 0