python线程按照顺序执行_Python3多线程之间的执行顺序问题

from threading importThread, Lock#由_acquire解锁执行后释放_release锁

def _print(_id: str, _acquire: Lock, _release: Lock) ->None:for i in range(10):

_acquire.acquire()print(f"id:{_id}")

_release.release()if __name__ == '__main__':#创建三个锁供3个线程使用

mutex1 =Lock()

mutex2=Lock()

mutex3=Lock()#定义三个线程A、B、C

#线程A需要mutex1解锁执行后释放mutex2

#线程B需要mutex2解锁执行后释放mutex3

#线程C需要mutex3解锁执行后释放mutex1

#元组中第一位是自定义的线程ID,第二位是解锁需要的锁,第三位是释放的锁

threads = [Thread(target=_print, args=[i[0], i[1], i[2]]) for i in[('A', mutex1, mutex2), ('B', mutex2, mutex3), ('C', mutex3, mutex1)]]#把mutex2和mutex3这两把锁先用了以便阻塞线程2和线程3的执行

mutex2.acquire()

mutex3.acquire()#接下来只有线程A可以先执行是因为mutex1并没有被占用

#线程B和线程C需要分别等待着锁2和锁3的释放才能继续执行

[thr.start() for thr inthreads]

[thr.join()for thr in threads]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值