gpt4 book ai didi

python - 使用 multiprocessing.Pool 打开的文件太多

转载 作者:太空狗 更新时间:2023-10-30 01:38:48 25 4
gpt4 key购买 nike

我有一个运行 multiprocessing.Pool 的 python 脚本来分别处理大量文件。我通常有一个 8 的 cpu 限制。我的问题是在运行一段时间后我总是得到“IOError:[Errno 24] 太多打开的文件”。每个子进程使用 file.open() 打开一些只读文件。然后将这些文件处理程序传递给多个函数以检索数据。在每个子进程结束时,这些文件用 file.close() 关闭。我也尝试了 with 语句,但没有解决问题。有没有人知道出了什么问题。我用谷歌搜索但没有找到任何答案。我正在关闭文件并且函数正在正确返回,所以是什么保留了文件处理程序。

我的设置是 Mac 10.5 和 python 2.6

谢谢

奥根

    from custom import func1, func2
# func1 and func2 only seek, read and return values form the file
# however, they do not close the file
import multiprocessing
def Worker(*args):
f1 = open("db1.txt")
f2 = open("db2.txt")
for each in args[1]:
# do many stuff
X = func1(f1)
Y = func2(f2)

f1.close()
f2.close()
return

Data = {1:[2], 2:[3]}
JobP= multiprocessing.Pool(8)
jobP.map_async(Worker, Data.items())
jobP.close()
jobP.join()

最佳答案

您可能受到操作系统打开文件限制的限制。参见 How do I change the number of open files limit in Linux?想要查询更多的信息。我个人更喜欢更改/etc/security/limits.conf 设置。

关于python - 使用 multiprocessing.Pool 打开的文件太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com