我编写了一个代码,将输出保存到一个文本文件和两个数字中。我重复了100次。我知道错误IOError: [Errno 24] Too many open files
。为什么每次迭代时我都要关闭文本文件和数字,但我还是会得到这个错误?
每个进程打开的最大文件,然后我将限制更改为ulimit -n 1200
而且很管用。但是,我仍然想了解为什么即使关闭输出文件,代码也会中断。我的代码如下所示:
import matplotlib.pyplot as plt
for i in range(100):
rdme = open('README_{0}'.format(i), 'w')
rmde.write(results)
# figure 1
fig, axes = plt.subplots(2, 1, sharex=True, figsize=(8, 9))
ax[0].plot(xa, ya)
ax[1].plot(xb, yb)
plt.savefig(plot1)
plt.close()
# figure 2
plt.plot(x2, y2)
plt.savefig(plot2)
plt.close()
rmde.write('code finished successfully')
rdme.close()
发布于 2018-05-30 10:15:49
我建议使用with
因为由于GC文件关闭速度可能很慢。
我可能会在结尾加个睡眠,然后用lsof
要了解哪些文件是打开的,如果它们不是我所期望的文件,请从那里开始。
https://stackoverflow.com/questions/-100004601
复制相似问题