【问题标题】:change the maximum number of open files in Windows更改 Windows 中打开文件的最大数量
【发布时间】:2014-12-03 21:01:09
【问题描述】:

我想知道如何更改 Windows 中打开文件的最大数量。类似于 unix 下的 ulimit 命令。在我的 c:\windows\system32 下,我找不到 CONFIG.NT 文件,因此更改 CONFIG.NT 文件中的文件号对我不起作用。

问题是我写了一个 python 脚本,其中我需要调用 subprocess.Popen(cmd, stdout=sp.PIPE, stdin=sp.PIPE, shell = True) 256 或 512 次。这意味着我需要启动 256 或 512 个后台进程。只要启动的进程数小于 255,脚本就可以正常工作。

【问题讨论】:

  • 据我所知,没有固定的最大值。不管出了什么问题,这可能不是原因。
  • 您遇到了什么问题?听起来您似乎没有提出正确的解决方案。
  • 听起来像是 Python 中的一个限制。 Windows 中的任何内容都不可能对子进程的数量施加一个字节的限制 - 尽管您应该注意,Windows 可能无法在同时运行这么多进程的情况下表现良好。

标签: windows parallel-processing


【解决方案1】:

这是一个老问题,但我会做出贡献。有一个限制,但不是每个子流程的限制。 Python 为每个子进程上的每个管道打开文件描述符。您的代码在 255 处中断,因为 Window 的默认限制为 512 个打开的文件描述符(非常接近 2 个管道 x 255 个子进程)。

请参阅此问题中的答案 3:Why python has limit for count of file handles?。这个答案显示了如何增加 Window 的默认限制。您可以将打开限制更改为每个 Windows 限制最多 2048 个。

【讨论】:

    【解决方案2】:

    一般的说法是 Windows 对文件没有上限;只是您可以在内存中管理的内容。

    我认为你会发现有用的:Russinvich's discussion of Windows handle resource limits 有用。

    我们构建了可以处理数千个文件的并行程序。尽管有这样的说法,但当我们尝试打开(并同时保持打开)数千个文件时,我们似乎遇到了资源限制。

    我们发现将打开次数限制在几百个是很有用的。这似乎并没有对超越极限的性能产生太大影响。这很容易通过并行应用程序中的计数信号量进行管理。

    【讨论】:

    • 问题是我写了一个python脚本,其中我需要调用 subprocess.Popen(cmd, stdout=sp.PIPE, stdin=sp.PIPE, shell = True) 256或512次。这意味着我需要启动 256 或 512 个后台进程。只要启动的进程数小于 255,脚本就可以正常工作。
    • 那么,鉴于这个问题,你为什么要问你所做的问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多