Suppose you make transactions in your wallet, only one at a time. First, you need to create a function that adds to the balance, and the other to pay the bills. Create and start the threads:
from threading import Thread, Lock
l = Lock()
wallet = 100
def add_balance(value):
global wallet
for i in range(100):
l.acquire()
wallet = wallet + value
l.release()
print(f"The New balance is: {wallet}")
def pay_bill(value):
global wallet
for i in range(100):
l.acquire()
wallet = wallet - value
print(f"The New balance is : {wallet}")
# creating threads
t1 = Thread(target=add_balance, args=(20,))
t2 = Thread(target=pay_bill, args=(5,))
t3 = Thread(target=pay_bill, args=(10,))
# starting threads
t1.start()
t2.start()
t2.start()
The previous code block tries to accomplish this goal but has some bugs. Select the true options.