Python互斥锁小技巧
Posted 礁之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python互斥锁小技巧相关的知识,希望对你有一定的参考价值。
"""
需求:
创建两个线程, 其中一个输出 1-52, 另一个输出 A-Z
输出格式要求:
12A
13B
56C
......
5151Z
"""
import threading
lock1 = threading.Lock()
lock2 = threading.Lock()
# 相当于两个方法互相去 上锁,解锁, func1执行完,lock2上锁, lock1解锁, 这时就会到func2,func2方法执行会把 lock1上锁, lock2解锁, 依次循环,直至两个方法执行完成
def func1():
for i in range(1, 52, 2):
lock2.acquire()
print(f"i i+1", end="")
lock1.release()
def func2():
for j in range(65, 91):
lock1.acquire()
print(chr(j))
lock2.release()
if __name__ == '__main__':
t1 = threading.Thread(target=func1)
t2 = threading.Thread(target=func2)
lock1.acquire() # 因为线程执行是无序的,这里主线程上锁, 等待子线程启动,因为func2方法中又有 lock1的上锁动作, 所以第一个执行的子线程必定是func1
t1.start()
t2.start()
以上是关于Python互斥锁小技巧的主要内容,如果未能解决你的问题,请参考以下文章