多线程
import threading
import time
def a():
for i in range(5):
print('1')
time.sleep(1)
def b():
for i in range(5):
print('2')
time.sleep(2)
if __name__ == '__main__':
# 创建列表,存放线程
threads = []
# 创建两个线程
th1 = threading.Thread(target=a)
th2 = threading.Thread(target=b)
# 将两个线程存放到上面的threads列表中
threads.append(th1)
threads.append(th2)
# 遍历列表,启动线程
for t in threads:
t.start()
# 遍历列表,守护线程
for t in threads:
t.join()
线程同步
使用线程同步的运行结果: 不使用线程同步的运行结果:
import threading
import time
def a():
for i in range(5):
# 获取锁,用于线程同步
threadLock.acquire()
print('1')
time.sleep(1)
# 释放锁,开启下一个线程
threadLock.release()
def b():
for i in range(5):
# 获取锁,用于线程同步
threadLock.acquire()
print('2')
time.sleep(2)
# 释放锁,开启下一个线程
threadLock.release()
if __name__ == '__main__':
# 使用lock使多线程在共享资源时不会乱
threadLock = threading.Lock()
# 创建列表,存放线程
threads = []
# 创建两个线程
th1 = threading.Thread(target=a)
th2 = threading.Thread(target=b)
# 将两个线程存放到上面的threads列表中
threads.append(th1)
threads.append(th2)
# 遍历列表,启动线程
for t in threads:
t.start()
# 遍历列表,守护线程
for t in threads:
t.join()