以下是一个示例代码,演示如何按顺序打印线程,并为每个线程设置随机的休眠时间:
import threading
import time
import random
# 创建一个锁对象
lock = threading.Lock()
# 定义一个线程类
class PrintThread(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
self.name = name
def run(self):
# 生成一个随机的休眠时间
sleep_time = random.randint(1, 5)
# 获取锁
lock.acquire()
# 执行打印操作
print("Thread {} is printing".format(self.name))
# 释放锁
lock.release()
# 休眠一段随机时间
time.sleep(sleep_time)
# 再次获取锁
lock.acquire()
# 打印线程完成信息
print("Thread {} has finished printing".format(self.name))
# 释放锁
lock.release()
# 创建线程实例
thread1 = PrintThread("Thread 1")
thread2 = PrintThread("Thread 2")
thread3 = PrintThread("Thread 3")
# 启动线程
thread1.start()
thread2.start()
thread3.start()
# 等待线程结束
thread1.join()
thread2.join()
thread3.join()
在上述代码中,我们首先创建了一个锁对象 lock
,用于控制线程的访问顺序。然后定义了一个线程类 PrintThread
,其中的 run
方法实现了线程的执行逻辑。在 run
方法中,我们首先生成一个随机的休眠时间,然后获取锁,执行打印操作,释放锁。接着线程会休眠一段随机时间,再次获取锁,打印线程完成信息,最后释放锁。
在主程序中,我们创建了三个线程实例,并依次启动它们。然后使用 join
方法等待所有线程结束。
运行上述代码,你会看到线程按顺序打印,并且每个线程的休眠时间是随机的。