请利用线程间通信, 完成连续打印1-100的数字, 要求一条线程专门打印奇数,另外一条专门用来打印偶数
时间: 2023-05-12 22:04:46 浏览: 70
可以使用两个线程来完成这个任务,一个线程专门打印奇数,另一个线程专门打印偶数。在两个线程之间进行通信,以确保它们交替打印数字。以下是示例代码:
```python
import threading
class PrintNumbers:
def __init__(self):
self.lock = threading.Lock()
self.current_number = 1
def print_odd(self):
while self.current_number <= 100:
with self.lock:
if self.current_number % 2 == 1:
print(self.current_number)
self.current_number += 1
def print_even(self):
while self.current_number <= 100:
with self.lock:
if self.current_number % 2 == 0:
print(self.current_number)
self.current_number += 1
if __name__ == '__main__':
printer = PrintNumbers()
t1 = threading.Thread(target=printer.print_odd)
t2 = threading.Thread(target=printer.print_even)
t1.start()
t2.start()
t1.join()
t2.join()
```
这个程序会创建一个 `PrintNumbers` 类,它有一个锁和一个 `current_number` 变量,用于跟踪当前要打印的数字。`print_odd` 和 `print_even` 方法分别打印奇数和偶数,它们都使用 `with self.lock` 语句来确保在打印数字时不会发生竞争条件。在 `main` 函数中,我们创建两个线程,一个用于打印奇数,另一个用于打印偶数,然后启动它们并等待它们完成。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)