首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python线程调度

Python线程调度
EN

Stack Overflow用户
提问于 2017-03-06 15:05:49
回答 1查看 4.3K关注 0票数 2

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

示例:

  1. ThreadPool有8个线程
  2. 8项任务合在一起
  3. 第九项任务是在一个小小的延迟之后完成的。
  4. 任务1需要1024年(可能需要一些优化)。
  5. 任务2-8需要一年.
  6. 任务9进来了,只需1秒。
  7. 无法执行任务9,因为正在使用所有线程。

任务1的代码类似于

代码语言:javascript
运行
复制
build_process = subprocess.Popen(build_command, shell=False)
build_process.wait()

在Task1等待的时候,是否可以从它抓取线程,然后执行任务9?然后,当Task 9完成时,返回到Task 1(等待进程完成?)Python已经实现了类似的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-06 15:43:52

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

可能的情况是,虽然不仅仅是有第十个线程,但是有一个要做的事情队列,将主线程填充到队列中(到目前为止,这是正常的),然后让每个线程足够聪明,知道什么时候它只是在等待(例如,等待一个子进程完成),然后开始另一个任务。请注意,我不推荐这种方法。只需在线程池中创建另一个线程即可。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42628948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档