Вопрос пользователя:
Ответ нейросети:
import threading
import random
class BankAccount:
def __init__(self, balance):
self.balance = balance
self.lock = threading.Lock()
def take(self):
for _ in range(100):
amount = random.randint(50, 500)
print(f"Запрос на {amount}")
self.lock.acquire()
if amount <= self.balance:
self.balance -= amount
print(f"Снятие: {amount}. Баланс: {self.balance}")
else:
print("Запрос отклонён, недостаточно средств")
self.lock.release()
account = BankAccount(1000)
threads = []
for _ in range(5):
t = threading.Thread(target=account.take)
threads.append(t)
t.start()
for t in threads:
t.join()
print("Итоговый баланс:", account.balance)
Пример использования:
account = BankAccount(1000) threads = [] for _ in range(5): t = threading.Thread(target=account.take) threads.append(t) t.start() for t in threads: t.join() print("Итоговый баланс:", account.balance)
Этот код создает класс BankAccount с методом take, который выполняет 100 транзакций снятия. Каждая транзакция снимает случайное целое число от 50 до 500. Если запрошенная сумма меньше или равна текущему балансу, она снимается, иначе выводится сообщение о недостаточности средств и поток блокируется. Класс использует мьютекс для синхронизации доступа к балансу.
Напишите нам, если в вопросе есть ваши персональные данные ([email protected])
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.