【发布时间】:2021-08-04 18:25:04
【问题描述】:
我在使用 multiprocessing.Pool 时收到 OSError: [Errno 24] Too many open files 错误。 export 函数连接到数据库,将数据导出到文件中,上传到 S3,然后从文件系统中删除文件。
with Pool() as pool:
results = pool.map(export, work, 1)
for result in results:
logger.info(result)
任何想法为什么会发生这种情况?
【问题讨论】:
-
没有看到你的工作代码就不可能回答这个问题。你在某处留下文件、数据库连接、网络连接或类似的东西打开,最终你会遇到每个进程的操作系统硬限制。一旦不再需要它们,请尝试关闭所有句柄,并确保退出工作函数时没有任何东西打开。