Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将读取的文本文件乘上';似乎不存在?_Python_Distributed Computing - Fatal编程技术网

Python 将读取的文本文件乘上';似乎不存在?

Python 将读取的文本文件乘上';似乎不存在?,python,distributed-computing,Python,Distributed Computing,我正在RHEL5 lustre文件系统上运行批处理作业。许多作业(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: 'data

我正在RHEL5 lustre文件系统上运行批处理作业。许多作业(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'
不能同时从多个进程打开同一文本文件吗?还有什么可能导致这种情况

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

请记住,打开的文件的数量是有限制的——确切地说,是文件描述符的数量。考虑到涉及的进程数量很大,很可能在执行过程中的某个点达到了限制…

只是一个“随机猜测”,可能错误消息只是误导


请记住,打开的文件的数量是有限制的——确切地说,是文件描述符的数量。考虑到涉及的进程数量很大,很可能在执行过程中的某个时候达到了限制…

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

result = None
while result is None:
    try:
        # connect perform I/O
        result = get_data(...)
    except:
         pass

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

result = None
while result is None:
    try:
        # connect perform I/O
        result = get_data(...)
    except:
         pass

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

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

更有效的方法是读取一次文件,并将
dataset\u location
作为参数传递给每个13k作业。

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

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


更有效的方法是读取一次文件,并将
dataset_location
作为参数传递给每个13k作业。

是否有任何修改或删除文件的操作?@user2357112否,没有任何更改文件的操作,该文件仅在
中使用
块是否有任何修改或删除文件的操作?@user2357112否,没有任何内容会更改该文件,该文件仅在
中使用
blocksure,如果作业是在python中生成的,那么这将起作用,但它们是从bash脚本生成的,该脚本只能在作业之间更改一个整数。。。这很难看,但这是我能想到的唯一可行的解决方案,如果作业是在python中生成的,那么这就可行了,但是它们是从一个bash脚本生成的,该脚本只能在作业之间改变一个整数。。。这很难看,但这是我能想出的唯一可行的解决方案尝试过类似的东西。。。不走运,好像文件在整个过程中丢失了job@Shep您是否尝试添加超时(
time.sleep)
)?也许文件句柄需要时间删除或做些什么。我会说大约2秒钟就可以完成这项工作,试试看。是的,我试着用5秒钟的时间检查了100次。不,同样的问题。我正在研究限制同时作业的数量(虽然我真的不知道为什么会有帮助)。。。不走运,好像文件在整个过程中丢失了job@Shep您是否尝试添加超时(
time.sleep)
)?也许文件句柄需要时间删除或做些什么。我会说大约2秒钟就可以完成这项工作,试试看。是的,我试着用5秒钟的时间检查了100次。不,同样的问题。我正在研究限制同时作业的数量(虽然我真的不知道为什么会有帮助)。注意,我可以重现这个错误
cat/proc/sys/fs/file max
给我829173个,这远远超过我正在运行的作业数量(约18k)@Shep我不是这类东西的专家,但据我所记得,有一个错误“系统”限制,以及PAR用户/每个组/每个进程组限制(S)。在我的系统中,<代码> ULIMIT -HN-SN/<代码>只报告1024个MAX打开文件。而<代码> /PRO/sys /FS/文件max 超出了这一点。<代码> CAT/PRO/Sys/FS/FixMax <代码>给了我829173,这远远超过我正在运行的工作的数量(大约18K)。Shep,我不是那种类型的专家,但据我所知,有一个“系统”限制,以及PAR用户/每个组/每个进程组限制(S)。在我的系统中,<代码> ULIMIT -HN-SN/<代码>只报告1024个MAX打开文件,而<代码> /PRO/sys /FS/文件max 超出了这一点。