疑问:
多线程任务是同时执行的,如果我们需要先执行线程a,再执行线程b,需要怎么办呢?
解决方法:
使用python的多线程锁lock。
例子:
未使用多线程锁lock:
def a():
for i in range(3):
print('a%d' % (i + 1))
time.sleep(1)
def b():
for i in range(3):
print('b%d' % (i + 1))
time.sleep(1)
T = threading.Thread(target=a)
T.start()
T = threading.Thread(target=b)
T.start()
运行结果:可看到,线程a和b是同时执行的
a1
b1
a2b2
a3
b3
Process finished with exit code 0
使用多线程锁lock后:
lock = threading.Lock()
def a():
lock.acquire()
for i in range(3):
print('a%d' % (i + 1))
time.sleep(1)
lock.release()
def b():
lock.acquire()
for i in range(3):
print('b%d' % (i + 1))
time.sleep(1)
lock.release()
T = threading.Thread(target=a)
T.start()
T = threading.Thread(target=b)
T.start()
运行结果:可看到,线程a先执行完,再执行线程b
a1
a2
a3
b1
b2
b3
Process finished with exit code 0
如果文章解决您多年未解之谜,请一键三连!