– Start
点击此处观看本系列配套视频。
假设我们有两个线程随机转账,我们增加了审计功能。
from threading import Thread, Lock
import threading
from random import randint
# 定义账户类
class Account:
def __init__(self, debit):
self.debit = debit
self.lock = Lock()
def increase(self, amount):
with self.lock:
self.debit += amount
account = Account(0)
# 启动两个线程同时转账
def transfer():
total_amount = 0 # 审计变量
for i in range(10000):
amount = randint(1, 10)
account.increase(amount)
total_amount += amount
# 打印出每个线程的转账总额
print(f'{threading.current_thread().getName()} transfered {total_amount}')
t1 = Thread(target=transfer)
t2 = Thread(target=transfer)
t1.start()
t2.start()
# 等待 t1 和 t2 结束,打印结果