两个线程交替输出a1b1a2b2a3b3依次类推 要怎么操作?
时间: 2024-05-13 07:15:36 浏览: 97
两个线程交替执行
4星 · 用户满意度95%
可以使用两个线程分别输出a和b,然后通过线程同步的方式控制交替输出。具体实现可以使用Lock机制或者Semaphore信号量。
下面是使用Semaphore信号量的示例代码:
```python
import threading
class PrintThread(threading.Thread):
def __init__(self, semaphore1, semaphore2, value):
threading.Thread.__init__(self)
self.semaphore1 = semaphore1
self.semaphore2 = semaphore2
self.value = value
def run(self):
for i in range(1, 4):
self.semaphore1.acquire()
print('a' + str(i) if self.value == 1 else 'b' + str(i))
self.semaphore2.release()
if __name__ == '__main__':
semaphore1 = threading.Semaphore(1)
semaphore2 = threading.Semaphore(0)
thread1 = PrintThread(semaphore1, semaphore2, 1)
thread2 = PrintThread(semaphore2, semaphore1, 2)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
```
在上面的代码中,我们创建了两个Semaphore对象,一个初始值为1,一个初始值为0。在PrintThread中,线程首先尝试acquire semaphore1,如果可以获取到,就输出a1或b1,然后release semaphore2,这样就让另一个线程可以获取到semaphore2,输出另一个字母。这样两个线程就可以交替输出了。
阅读全文