0

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

不能同时从多个进程打开同一个文本文件吗?还有什么可能导致这种情况?

4

3 回答 3

1

只是一个“随机猜测”,也许错误信息只是误导?

请记住,打开文件的数量是有限制的——或者准确地说是文件描述符的数量。鉴于所涉及的进程数量众多,很可能在执行期间的某个时间点达到了限制......

于 2013-08-14T18:35:32.157 回答
1

我不知道为什么会发生这种情况,可能是文件锁定或打开的文件句柄太多。但是当您打开/与您的文件交互时应用它。它基本上一直在尝试,直到没有错误为止。

result = None
while result is None:
    try:
        # connect perform I/O
        result = get_data(...)
    except:
         pass
于 2013-08-14T18:37:24.860 回答
1

没有理由需要 13K 个作业都读取同一个文件只是为了挑出一行:

dataset_location = txt_file.readlines()[job_number].strip()

dataset_location一次读取文件并作为参数传递给 13k 个作业中的每一个会更有效。

于 2013-08-14T19:00:00.990 回答