python编写程序:有四个线程,每个线程只打印一个数字,这四个数字分别是 1 2 3 4 ,现在要求你做到四个线程顺序打印 1 2 3 4 ,且每个线程都打印10次
时间: 2024-02-18 21:06:30 浏览: 15
好的,以下是Python多线程的代码实现:
```python
import threading
class PrintThread(threading.Thread):
def __init__(self, num, lock):
threading.Thread.__init__(self)
self.num = num
self.lock = lock
def run(self):
for i in range(10):
with self.lock:
print(self.num)
self.lock.notifyAll()
self.lock.wait()
if __name__ == '__main__':
lock = threading.Condition()
threads = []
for i in range(1, 5):
t = PrintThread(i, lock)
threads.append(t)
for t in threads:
t.start()
with lock:
lock.notifyAll()
```
这个程序中,我们定义了一个`PrintThread`类,它继承了`threading.Thread`,并实现了`run`方法。`run`方法中,我们使用了一个锁对象`lock`,它是一个`Condition`对象,用于控制四个线程的顺序打印。
在每个线程中,我们使用`with self.lock`语句获取锁,然后打印当前数字,然后调用`notifyAll`方法通知所有等待的线程,然后调用`wait`方法等待下一个线程的通知。
在`main`函数中,我们创建了四个`PrintThread`对象,并启动它们。然后调用`notifyAll`方法通知第一个线程开始打印。