2014-12-03 3 views
0

Я хотел бы знать, как я могу изменить максимальное количество открытых файлов в Windows. Аналогично команде ulimit под unix. В моем c: \ windows \ system32 я не могу найти файл CONFIG.NT, поэтому изменение номера файла в файле CONFIG.NT не будет работать для меня.изменить максимальное количество открытых файлов в Windows

Проблема заключается в том, что я написал скрипт python, в котором мне нужно вызвать subprocess.Popen (cmd, stdout = sp.PIPE, stdin = sp.PIPE, shell = True) 256 или 512 раз. Это означает, что мне нужно запустить 256 или 512 фоновых процессов. Сценарий отлично работает, когда количество запущенных процессов меньше 255.

+0

Насколько я знаю, фиксированного максимума нет. Что бы ни случилось, это, вероятно, не причина. –

+0

С какими проблемами вы сталкиваетесь? Звучит не так, как будто вы придумали правильное решение. –

+0

Звучит как ограничение в Python. Ничто в Windows, скорее всего, не наложит однобайтового ограничения на количество дочерних процессов, хотя вы должны заметить, что Windows может не работать с тем, что многие процессы работают одновременно. –

ответ

0

Общее утверждение состоит в том, что Windows не имеет верхнего предела для файлов; просто то, что вы можете управлять в памяти.

Думаю, вы найдете полезным: Russinvich's discussion of Windows handle resource limits полезно.

Мы создаем параллельные программы, которые могут обрабатывать тысячи файлов. Несмотря на претензии, мы, похоже, сталкиваемся с ограничениями ресурсов, когда пытаемся открыть (и одновременно открывать) несколько тысяч файлов.

Мы обнаружили, что полезно ограничить количество открытий до нескольких сотен. Это, по-видимому, не влияет на производительность намного больше, чем нажимать ограничения. Это довольно легко управлять с помощью счетного семафора в вашем параллельном приложении.

+0

Проблема в том, что я написал скрипт python, в котором мне нужно вызвать subprocess.Popen (cmd, stdout = sp.PIPE, stdin = sp.PIPE, shell = True) 256 или 512 раз. Это означает, что мне нужно запустить 256 или 512 фоновых процессов. Скрипт отлично работает, когда количество запущенных процессов меньше 255. – diane

+0

Так почему вы задали вопрос, который вы сделали, учитывая эту проблему? –

0

Это старый вопрос, но я буду вносить свой вклад. Существует предел, но это не предел подпроцессов. Python открывает дескрипторы файлов для каждого канала на каждом подпроцессе. Ваш код разбивается на 255, потому что у окна есть ограничение по умолчанию для 512 открытых файловых дескрипторов (довольно близко к двум подпроцессам x 255).

См. Ответ 3 в этом вопросе: Why python has limit for count of file handles?. Этот ответ показывает, как увеличить ограничение по умолчанию для окна. Вы можете изменить открытый лимит на максимум 2048 на лимиты Windows.

Смежные вопросы