【问题标题】:ThreadPoolExecutor, Semaphore or max_workers?ThreadPoolExecutor、信号量还是 max_workers?
【发布时间】:2022-11-12 09:52:46
【问题描述】:

试图为我当前的任务实现 ThreadPoolExecutor(那是我第一次使用它)我遇到了一个巨大的误解。 Semaphore 和 max_workers 有什么区别?就像我有一个任务池要做并且我希望我的代码一次只处理 3 个任务,我应该使用这两种方法中的哪一种?另一个目的是什么?

【问题讨论】:

    标签: python threadpoolexecutor


    【解决方案1】:

    信号: 释放的次数可以多于获得的次数,这会将其计数器提高到起始值之上。假设我们必须同时允许 10 个成员访问数据库,并且只允许 4 个成员访问网络连接。为了处理这种类型的需求,我们不能使用 Lock 和 RLock 概念,在这里我们应该使用 Semaphore。信号量可用于限制对容量有限的共享资源的访问。它是同步的高级部分。

    max_workers:它是线程数或池大小。在您的情况下,您应该使用max_workers=3,这将确保一次生成 3 个线程并相应地完成该过程。

    【讨论】:

      猜你喜欢
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多