📜  使用注释休眠多对一示例(1)

📅  最后修改于: 2023-12-03 14:49:56.145000             🧑  作者: Mango

使用注释休眠多对一示例

在多线程编程中,有时候需要等待其他线程完成再继续执行下面的代码,这时候可以使用注释来实现线程休眠。

示例代码
import threading

# 定义一个需要等待完成的线程函数
def worker(num):
    print("Worker %d started." % num)
    # 执行一些操作,例如下载文件、处理数据等
    # 然后将注释标记为完成
    # [worker-%d] Completed
    print("Worker %d completed." % num)

# 定义主线程函数
def main():
    print("Main thread started.")

    # 创建多个子线程
    threads = []
    for i in range(5):
        t = threading.Thread(target=worker, args=(i,))
        threads.append(t)
        t.start()

    # 等待子线程完成
    # [waiting] Wait for workers
    print("Waiting for all workers to complete.")
    for t in threads:
        t.join()

    # 所有子线程完成后继续执行下面的代码
    # [main] All workers completed
    print("All workers completed, continue to do something else.")

if __name__ == "__main__":
    main()
分析

该示例代码中,定义了一个 worker 函数用于模拟执行一些操作,然后将注释标记为完成。在主线程中创建多个子线程,并且使用 join 函数等待所有子线程完成。等待子线程完成的这段时间中,主线程会被挂起,即进行线程休眠。当所有子线程完成后,主线程会重新被唤醒,执行下面的代码。

注释的格式为 [名称] 内容,名称可以自己取,只需要保证唯一即可。worker 函数完成操作后,将注释的名称设为 worker-%d,其中 %d 会被对应的工作线程编号取代。主线程等待线程完成时,使用名称为 waiting 的注释。当所有子线程完成后,主线程执行下面的代码时,使用名称为 main 的注释。

总结

使用注释休眠多对一的方式可以有效地等待其他线程完成后继续执行。在注释中使用名称可以清楚地了解各个线程的状态,方便调试和维护。