我想用python多处理模块做一些任务调度。我有两个池p1和p2。一个具有高优先级,另一个具有低优先级。首先将任务放入高优先级池。如果在一段时间后,例如10秒后,任务仍然没有完成,我将把它迁移到较低优先级的池中。问题是,我是否可以将任务从一个池迁移到另一个池,而不浪费第一个池中已经完成的工作?基本上,我想暂停一个池中正在运行的子进程,并将其添加到另一个池中,然后恢复它。如果第二个池繁忙,则该任务将等待,直到有空闲的插槽可用。
发布于 2016-11-17 14:16:23
一旦一个池中的进程开始执行任务,就不能暂停该任务并将其添加到另一个池中。然而,您可以做的是让第一个进程中的处理程序返回一个元组,而不仅仅是它正在计算的值。元组中的第一件事可以是一个布尔值,表示任务是否已经完成,第二件事可以是答案,如果没有完成,也可以是部分答案。然后,您可以编写一些额外的逻辑来接受任何标记为未完成的返回值,并将它们与已经计算并从第一个进程返回的数据一起传递给第二个进程。
不幸的是,这将需要你想出一种存储部分工作的方法,这可能非常容易,也可能非常困难,这取决于你正在做什么。
https://stackoverflow.com/questions/40647363
复制相似问题