线程的执行是无序的,是根据CPU管理器自动去调度执行的。所以对于数据严格的操作需要使用线程锁来控制线程。
字符 A-Z ,通过ord()函数转换成ASCLL码,然后在通过chr()转换回来。
import threading
def test1():
for i in range(1, 52, 2):
lock1.acquire() # 给线程1上锁
print(i, end="") # 添加end="",不换行
print(i + 1, end="")
lock2.release() # 线程1执行完毕,释放线程2的锁
def test2():
for i in range(26):
lock2.acquire()
print(chr(i + ord("A")))
lock1.release()
if __name__ == '__main__':
# 定义两个线程
t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
# 定义两个线程锁
lock1 = threading.Lock()
lock2 = threading.Lock()
# 保证线程1先执行,给线程2上锁
lock2.acquire()
# 启动线程
t1.start()
t2.start()