我试图在Python2.7中用模块线程实现ThreadPool + Scheduler。我的池包含预先分配的线程,我的调度程序处理应该执行任务的线程。我有一些线程执行一个系统进程,并等待它的结果。这些系统调用可能需要很长时间,我希望能够在执行任务时重用线程。
示例:
任务1的代码类似于
build_process = subprocess.Popen(build_command, shell=False)
build_process.wait()在Task1等待的时候,是否可以从它抓取线程,然后执行任务9?然后,当Task 9完成时,返回到Task 1(等待进程完成?)Python已经实现了类似的东西吗?
发布于 2017-03-06 15:43:52
不,这在基本Python中是不可能的。
可能的情况是,虽然不仅仅是有第十个线程,但是有一个要做的事情队列,将主线程填充到队列中(到目前为止,这是正常的),然后让每个线程足够聪明,知道什么时候它只是在等待(例如,等待一个子进程完成),然后开始另一个任务。请注意,我不推荐这种方法。只需在线程池中创建另一个线程即可。
如果您有一种方法可以知道哪些任务是快速的,哪些是短的,那么您可以创建两个线程池:一个用于长任务,另一个用于快速任务,并将任务分配到适当池的队列中。
https://stackoverflow.com/questions/42628948
复制相似问题