设计一个财务收支业务的程序,构建存钱、取钱两个线程。 存钱线程启动后,每隔1秒钟,随机往账户中存入[0,20]块钱。 每次存钱程序输出:in+空格+存入金额+空格+账户余额 当金额超过100时,唤醒取钱线程, 取钱线程被唤醒后,随机在账户中提取[50-100]块钱。 每次取钱程序输出:out+空格+支取金额+空格+账户余额
时间: 2023-12-31 18:03:46 浏览: 53
银行账户的存取款线程设计
以下是一个使用 Python 实现的财务收支业务程序:
```python
import random
import threading
import time
balance = 0
lock = threading.Lock()
condition = threading.Condition()
def deposit():
global balance
while True:
amount = random.randint(0, 20)
with lock:
balance += amount
print('in', amount, balance)
if balance > 100:
condition.notify()
time.sleep(1)
def withdraw():
global balance
while True:
with condition:
while balance <= 100:
condition.wait()
amount = random.randint(50, 100)
with lock:
balance -= amount
print('out', amount, balance)
time.sleep(1)
if __name__ == '__main__':
deposit_thread = threading.Thread(target=deposit)
withdraw_thread = threading.Thread(target=withdraw)
deposit_thread.start()
withdraw_thread.start()
```
该程序通过两个线程模拟存钱和取钱的操作,并使用锁和条件变量保证线程安全。存钱线程每隔1秒钟随机往账户中存入一定金额,当账户余额超过100时,唤醒取钱线程。取钱线程被唤醒后,随机在账户中提取一定金额。每次存钱和取钱操作后,程序会输出相应的信息,包括操作类型、金额和账户余额。
阅读全文