gpt4 book ai didi

Python线程调度

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:36 26 4
gpt4 key购买 nike

我正在尝试使用模块线程在 Python 2.7 中实现 ThreadPool + Scheduler。我的池包含预先分配的线程,我的调度程序处理哪个线程应该执行任务。我有一些执行系统进程的线程,并等待它的结果。这些系统调用可能需要很长时间,我希望能够在任务执行时重用线程。

例子:

  1. ThreadPool有8个线程
  2. 8 个任务放在一起
  3. 第 9 个任务在稍有延迟后出现
  4. 任务 1 需要 1024 年(也许可以进行一些优化)。
  5. 任务 2-8 需要 1 年时间。
  6. 任务 9 进来了,只用了 1 秒。
  7. 无法执行任务 9,因为正在使用所有线程。

任务 1 有类似的代码

build_process = subprocess.Popen(build_command, shell=False)
build_process.wait()

有没有办法在Task1等待的时候从Task1中抓取Thread,然后执行Task 9?然后当任务 9 完成后返回任务 1(等待过程完成?)Python 是否已经实现了类似的东西?

最佳答案

不,这在基本的 Python 中是不可能的。

有什么可能,虽然比只拥有第十个线程要多得多,但是有一个队列要做,让主线程在那个队列中填充东西(到目前为止这是正常的),然后让每个线程都足够聪明,知道它什么时候只是在等待(例如,等待一个子进程完成),然后执行另一个任务。请注意,我推荐这种方法。只需在您的线程池中创建另一个线程即可。

如果您有办法知道哪些任务快,哪些任务短,那么您可以创建两个线程池:一个用于长任务,一个用于快速任务,并将任务分配给适当的池队列。

关于Python线程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42628948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com