Python 3基础教程42-锁

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

import threading

def 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 1
job1 2
job1 3
job1 4
job1 5
job1 6
job1 7
job1 8
job1 9
job1 10
job2 15
job2 20
job2 25
job2 30
job2 35
job2 40
job2 45
job2 50
job2 55
job2 60
>>> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值