启动3个线程打印递增的数字,控制线程1打印1,2,3,4,5(每行都打印线程名 和一个数字),线程2打印6,7,8,9,10,线程3打印11,12,13,14,15;接下 来再由线程1打印16,17,18,19,20,••...•依次类推,直到打印75
时间: 2024-05-16 16:16:59 浏览: 14
下面是使用 Python 实现的一个简单的多线程程序,实现了题目所描述的功能:
```python
import threading
def print_numbers(start, end, thread_name):
for i in range(start, end + 1):
print(thread_name, i)
if __name__ == '__main__':
start = 1
end = 75
thread1 = threading.Thread(target=print_numbers, args=(start, 5, 'Thread 1:'))
thread2 = threading.Thread(target=print_numbers, args=(6, 10, 'Thread 2:'))
thread3 = threading.Thread(target=print_numbers, args=(11, 15, 'Thread 3:'))
thread1.start()
thread2.start()
thread3.start()
thread1.join()
thread2.join()
thread3.join()
for i in range(16, end + 1):
if i % 5 == 1:
thread1 = threading.Thread(target=print_numbers, args=(i, i + 4, 'Thread 1:'))
thread1.start()
thread1.join()
elif i % 5 == 2:
thread2 = threading.Thread(target=print_numbers, args=(i, i + 4, 'Thread 2:'))
thread2.start()
thread2.join()
else:
thread3 = threading.Thread(target=print_numbers, args=(i, i + 4, 'Thread 3:'))
thread3.start()
thread3.join()
```
首先,我们定义一个名为 `print_numbers` 的函数,该函数用于打印一段数字序列,其中参数 `start` 和 `end` 分别表示序列的起始和结束数字,参数 `thread_name` 表示当前线程的名称。
然后,我们分别创建三个线程,分别用于打印数字序列 1~5、6~10 和 11~15。这里我们使用 `threading.Thread` 类来创建线程,并将 `print_numbers` 函数作为目标函数传递给线程对象。注意,这里需要将参数以元组的形式传递给目标函数,因此我们使用了 `args` 参数来传递参数。
接下来,我们启动三个线程,并等待所有线程执行完毕,使用 `join` 方法实现。这样可以保证三个线程先打印出 1~15 的数字序列。
最后,我们使用一个循环来依次打印数字序列 16~75。在循环中,我们首先根据当前数字所在的位置,判断应该使用哪个线程来打印。然后,我们创建一个新的线程对象,并启动该线程,等待线程执行完毕后再继续下一次循环。这样可以保证每个线程依次打印数字序列。