用python 写程序,三个线程同时开启把100减到0, 输出类似“线程1,减到80。线程2,减到79.。”注意,不能出现相同的数,如两个线程都是减到80
时间: 2024-03-25 10:35:33 浏览: 17
可以使用Python的多线程模块threading实现。下面是一个示例代码:
```python
import threading
# 定义一个全局变量num,初始值为100
num = 100
# 定义一个锁,用于线程同步
lock = threading.Lock()
# 自定义线程类
class MyThread(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
self.name = name
def run(self):
global num
while True:
# 获取锁
lock.acquire()
if num > 0:
# 输出线程名称和当前num值
print("线程%s,减到%d。" % (self.name, num))
# num减1
num -= 1
else:
# 释放锁
lock.release()
break
# 释放锁
lock.release()
# 创建三个线程
t1 = MyThread("1")
t2 = MyThread("2")
t3 = MyThread("3")
# 启动三个线程
t1.start()
t2.start()
t3.start()
# 等待三个线程执行完毕
t1.join()
t2.join()
t3.join()
# 输出最终的num值
print("num的最终值为:%d" % num)
```
在上面的代码中,定义了一个全局变量num和一个锁对象lock,用于实现线程同步。同时定义了一个自定义的线程类MyThread,重写了run方法,用于实现线程的具体逻辑。在run方法中,先获取锁,判断num是否大于0,如果大于0就输出线程名称和当前num值,然后将num减1;如果num已经减到0了,就释放锁并退出循环。最后输出最终的num值。
在主程序中,创建了三个线程对象t1、t2、t3,并分别启动这三个线程。然后使用join方法等待所有线程执行完毕。最后输出最终的num值。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)