假设图书馆现有图书100本,请你打开两个线程,分别是借图书(每间隔1秒借1次)和还图书(每间隔3秒还1次),模拟借书还书过程,如:归还一本,现有图书101本。借走一本,,现有图书100本
时间: 2023-09-20 08:07:04 浏览: 68
图书馆系统之借书,还书
4星 · 用户满意度95%
好的,我来给你写一个Python的实现。
首先,我们需要使用`threading`模块来创建两个线程,分别模拟借书和还书的过程。然后我们使用一个全局变量`book_count`来表示图书馆中剩余的图书数量。
在借书线程中,我们可以使用一个while循环来不断尝试借书,每次借书前先判断图书馆中是否还有书可借,如果有就将`book_count`减1,表示借出了一本书,然后等待1秒钟再进行下一次借书尝试。
在还书线程中,同样使用一个while循环来不断尝试还书,每次还书前先判断是否有书被借走了,如果有就将`book_count`加1,表示归还了一本书,然后等待3秒钟再进行下一次还书尝试。
下面是完整的代码:
```python
import threading
import time
book_count = 100
def borrow_book():
global book_count
while True:
if book_count > 0:
book_count -= 1
print("借走一本,现有图书{}本".format(book_count))
time.sleep(1)
def return_book():
global book_count
while True:
if book_count < 100:
book_count += 1
print("归还一本,现有图书{}本".format(book_count))
time.sleep(3)
if __name__ == "__main__":
borrow_thread = threading.Thread(target=borrow_book)
return_thread = threading.Thread(target=return_book)
borrow_thread.start()
return_thread.start()
borrow_thread.join()
return_thread.join()
```
在上面的代码中,我们创建了两个线程`borrow_thread`和`return_thread`,分别执行`borrow_book`和`return_book`函数。然后使用`start`方法启动两个线程,使用`join`方法等待两个线程执行完毕。
当我们运行程序时,会不断输出借书和还书的日志,如下所示:
```
借走一本,现有图书99本
归还一本,现有图书100本
借走一本,现有图书99本
借走一本,现有图书98本
归还一本,现有图书99本
借走一本,现有图书98本
归还一本,现有图书99本
借走一本,现有图书98本
...
```
这样就实现了一个简单的多线程模拟借书还书的程序。
阅读全文