乘法读取文本文件似乎不存在?

时间:2013-08-14 18:14:01

标签: python distributed-computing

我正在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'

是否无法同时从多个进程打开相同的文本文件?还有什么可能导致这个?

3 个答案:

答案 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作业。