Windows下使用loky.ProcessPoolExecutor时残留进程无法终止的问题
解决loky.ProcessPoolExecutor在Windows下残留额外进程的问题
那个额外残留的进程是loky的资源跟踪器(ResourceTracker),负责清理子进程创建的临时文件和系统资源,默认情况下它会在后台持续运行直到Python解释器退出。要非强制终止它,可以通过以下方法:
方法:显式关闭资源跟踪器
在调用pool.shutdown(kill_workers=True)之后,直接调用资源跟踪器的shutdown()方法,代码示例:
import loky import time from loky.process_executor import _resource_tracker def f(): time.sleep(10) return 0 if __name__ == "__main__": pool = loky.ProcessPoolExecutor(3) task = pool.submit(f) task.result() # 关闭进程池 pool.shutdown(kill_workers=True) # 关闭资源跟踪进程 _resource_tracker.shutdown()
说明
- ResourceTracker是loky为跨平台资源管理设计的组件,Windows系统下无法像Linux那样依赖内核自动清理临时资源,因此需要单独的进程来处理。
- 调用
_resource_tracker.shutdown()会优雅终止该进程,不需要使用os.kill这类强制手段。 - 注意:
_resource_tracker属于loky的内部API,未来版本可能会有接口变动,使用时需留意loky的版本兼容性。
内容的提问来源于stack exchange,提问作者S R Maiti
相关产品推荐
相关产品推荐

