Windows   发布时间:2022-05-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用fopen增加Windows中Matlab中打开文件描述符的最大数量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个程序需要在Matlab中保存大约3000个打开的文件描述符.
原因是如果我不打开它们,我需要打开和关闭它们
超过10万次,这意味着3亿次开放式近距离操作.考虑到每个文件都附加到每个文件并且fopen和fclose每个文件可能需要多达一秒(文件很大,即100mb),应该清楚这种情况是不可接受的.

我知道文件句柄的Windows限制设置为10000,但Matlab拒绝使用fopen打开超过512个文件.我无法弄清楚如何强迫它增加这个数字.

有人知道如何更改512限制吗?它在哪里定义?
它甚至与Matlab有关吗?

解决方法

难道你不能真正检查你的程序并以不同的方式构造它,以便只从文件内容的部分内存表示中工作吗?

例如,如果要将100 000行附加到3000个文件(即使不需要对文件中已有的内容进行任何表示),您可以这样做:

%% Main processing
function [] FullProcess()
%[        
    for block = 1:100,% Partial processing 
        lines = processBlock(block);

        % Save step   
        pushToFiles(block,lines);     

    end        
%]

附:

% Partial processing in memory
function [lines] = processBlock(block)
%[
    % Preallocate
    lines = cells(1000,3000);

    % Do the processing for current block
    ...
    lines{500,12} = 'kikou';
    ...
%]

和:

%% Save partial work
function [] = pushToFiles(block,lines)
%[
    fcount = size(lines,2);
    lcount = size(lines,1);
    for fi = 1:fcount,[fid,msg] = fopen(fprintf('f%i',fi),'a'); % Open in append mode
       if (fid < 0),error(msg); end

       for li = 1:lcount,fprintf(fid,lines{li,fi});
       end

       fclose(fid);

    end
%]

这减少了100 fopen / fclose的事情(尽管有3000个文件,但这远远低于之前的预期)

大佬总结

以上是大佬教程为你收集整理的使用fopen增加Windows中Matlab中打开文件描述符的最大数量全部内容,希望文章能够帮你解决使用fopen增加Windows中Matlab中打开文件描述符的最大数量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: