python3. 假设图书馆现有图书100本,请你打开两个线程,分别是借图书(每间隔1秒借1次)和还图书(每间隔3秒还1次),模拟借书还书过程,结果类似如下所示:
时间: 2023-09-19 16:07:02 浏览: 36
下面是使用 Python 3 中的 threading 模块来实现的代码:
```python
import threading
import time
num_books = 100
borrowed_books = 0
returned_books = 0
def borrow_books():
global num_books, borrowed_books
while True:
time.sleep(1)
if num_books > 0:
num_books -= 1
borrowed_books += 1
print("Borrowed a book. Total borrowed books:", borrowed_books)
else:
print("No books available for borrowing.")
def return_books():
global num_books, returned_books
while True:
time.sleep(3)
if borrowed_books > 0:
borrowed_books -= 1
num_books += 1
returned_books += 1
print("Returned a book. Total returned books:", returned_books)
else:
print("No books to be returned.")
if __name__ == "__main__":
borrow_thread = threading.Thread(target=borrow_books)
return_thread = threading.Thread(target=return_books)
borrow_thread.start()
return_thread.start()
borrow_thread.join()
return_thread.join()
```
在上面的代码中,我们定义了两个线程,分别是借书线程和还书线程。借书线程每隔 1 秒尝试借一本书,如果有书可借则将总书数减一,同时将借书数加一,并在控制台输出借了一本书和当前总共借书数。如果没有书可借,则提示无书可借。还书线程每隔 3 秒尝试还一本书,如果当前有书被借出去,则将借书数减一,总书数加一,同时将还书数加一,并在控制台输出还了一本书和当前总共还书数。如果当前没有书被借出去,则提示无书可还。
在主程序中,我们创建了借书线程和还书线程,并启动它们。由于这两个线程都是死循环,因此我们需要使用 join() 方法等待它们执行完毕。