我正在RHEL5光泽文件系统上运行批处理作业。许多作业(13k)读取相同的文本文件,该文件用于将每个作业定向到不同的数据集。代码如下所示:
with open('dataset-paths.txt') as txt_file:
dataset_location = txt_file.readlines()[job_number].strip()
但是对于我的一些工作,我得到了
IOError: [Errno 2] No such file or directory: 'dataset-paths.txt'
是否无法同时从多个进程打开相同的文本文件?还有什么可能导致这个?
答案 0 :(得分:1)
只是一个“随机猜测”,也许错误信息只是误导?
请记住,打开的文件数量有限制 - 或者说文件描述符的数量是精确的。鉴于所涉及的流程数量很多,很可能在执行期间的某个时刻达到了限制......
答案 1 :(得分:1)
我不知道为什么会发生这种情况,可能会锁定文件或打开过多的文件句柄。但是当您打开/与文件交互时应用此选项。它基本上一直在尝试,直到没有错误。
result = None
while result is None:
try:
# connect perform I/O
result = get_data(...)
except:
pass
答案 2 :(得分:1)
没有理由为什么你需要13K个工作才读取同一个文件只是为了选择一行:
dataset_location = txt_file.readlines()[job_number].strip()
读取文件一次会更有效,并将dataset_location
作为参数传递给每个13k作业。