首页 > 解决方案 > python中的线程(多线程)

问题描述

如果我有 7 个方法和 2 个线程。方法 1 和方法 2 需要由 2 个线程(线程 1,线程 2)执行。取决于哪个线程首先完成。例如:如果线程 2 首先完成执行,它应该选择方法 3 执行,线程 1 应该选择方法 4,它应该继续执行相同的方法,直到所有 7 个方法都被执行。有没有办法做到这一点?任何参考将不胜感激

标签: pythonmultithreadingmultiprocessing

解决方案


除了来自其他答案的基于队列的解决方案之外,您还可以使用优秀的concurrent.futures模块为您完成繁重的工作:

with concurrent.futures.ThreadPoolExecutor(2) as pool:
    for m in methods:
        pool.submit(m)

submit()线程池上的方法将任务提交到池中并返回一个Future对象(不要与同名的 asyncio 类型混淆),该对象允许您查询特定任务是否完成,等待它完成,然后选择结果。

如果您不执行任何操作,则with块将自动等待所有提交的任务在块结束时完成。


推荐阅读