python多线程按顺序输出
时间: 2023-10-01 10:02:14 浏览: 97
浅谈Python3多线程之间的执行顺序问题
在 Python 中,多线程是无法保证执行顺序的,因为线程的执行是由操作系统调度的。但是可以通过一些方法来实现多线程按顺序输出。下面是一种实现方式:
1. 定义一个列表,用于存放线程对象
2. 循环创建多个线程,每个线程负责输出一个固定的字符串
3. 按照顺序将线程对象添加到列表中
4. 循环遍历列表,依次调用每个线程的 join() 方法,等待线程执行完毕
5. 在每个线程中添加一个锁,保证线程的输出顺序
具体实现代码如下:
```python
import threading
# 定义一个全局锁
lock = threading.Lock()
# 定义一个列表,用于存放线程对象
threads = []
# 定义一个函数,用于输出指定的字符串
def print_string(string, order):
# 获取锁,保证线程的输出顺序
lock.acquire()
print(f"Thread {order}: {string}")
# 释放锁
lock.release()
# 循环创建多个线程,每个线程负责输出一个固定的字符串
for i in range(1, 6):
thread = threading.Thread(target=print_string, args=(f"Hello from thread {i}", i))
threads.append(thread)
# 按照顺序将线程对象添加到列表中
for thread in threads:
thread.start()
# 循环遍历列表,依次调用每个线程的 join() 方法,等待线程执行完毕
for thread in threads:
thread.join()
```
输出结果如下:
```
Thread 1: Hello from thread 1
Thread 2: Hello from thread 2
Thread 3: Hello from thread 3
Thread 4: Hello from thread 4
Thread 5: Hello from thread 5
```
可以看到,虽然线程的执行顺序是不确定的,但是通过加锁和等待线程执行完毕的方法,实现了多线程按顺序输出的效果。
阅读全文