Я столкнулся с проблемой, возникло исключение OSError 24 («Слишком много открытых файлов»), поднятое на моем Mac OS X в сценарии Python.
Я понятия не имел, что могло вызвать эту проблему. lsof -p показывал около 40-50 строк, а мой ulimit был 1200 (проверяю с помощью
resource.getrlimit(resource.RLIMIT_NOFILE)
), который вернул кортеж (1200, 1200). Так что я даже близко не превышал лимит.
Что мой скрипт породил ряд подпроцессов, а также выделил сегменты общей памяти. Исключение при выделении сегментов общей памяти. Я использую модуль sysv_ipc.
Также я знал, что общее разрешенное количество сегментов разделяемой памяти достаточно велико (128 сегментов), и команда
ipcs -b -m
дал определенно меньшее количество (не более 40 сегментов).