Многопроцессорность Python вызывает ошибку OSError: [Errno 24] Слишком много открытых файловPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Многопроцессорность Python вызывает ошибку OSError: [Errno 24] Слишком много открытых файлов

Сообщение Anonymous »

Я пытаюсь распараллелить свой скрипт Python, используя пул процессов из 4 рабочих процессов из модуля multiprocessing. Кажется, эта ошибка предполагает, что открывается слишком много каналов, но я не понимаю, как это происходит, учитывая, что я создаю только 4 рабочих.
Это функция, которая выполняет спавны. пул:

Код: Выделить всё

def do_learning_experiments(model, alphabet, correct_size, prot):
"""
Perform the learning experiments for the given model and alphabet.

Args:
model: model to learn
alphabet: input alphabet
correct_size: correct size of the model
"""
# create a copy of the SUL for each oracle
suls = [AutomatonSUL(model) for _ in range(NUM_ORACLES)]
wpr = WALKS_PER_ROUND[prot]
wl = WALK_LEN[prot]
# initialize the oracles
eq_oracles = [StochasticRandom(alphabet, suls[0], wpr, wl),
StochasticLinear(alphabet, suls[1], wpr, wl),
StochasticSquare(alphabet, suls[2], wpr, wl),
StochasticExponential(alphabet, suls[3], wpr, wl)]
# create the arguments for eache oracle's task
tasks = [(alphabet, sul, oracle, correct_size, i)
for i, (sul, oracle) in enumerate(zip(suls, eq_oracles))]
with mp.Pool(processes=mp.cpu_count()) as pool:
results = pool.starmap(process_oracle, tasks)

return results
Я запускаю эту функцию несколько раз внутри цикла for, чтобы усреднить измерения, например:

Код: Выделить всё

for trial in range(TIMES):
results = do_learning_experiments(model, alphabet, correct_size, prot)
Я заметил, что, например, когда я устанавливаю TIMES=1 или TIMES=10, эта ошибка не возникает. Однако когда я устанавливаю TIMES=30 (а это то, что мне нужно), возникает ошибка.
Это заставляет меня думать, что процессы не закрыты должным образом, но я на системном мониторе в любой момент не отображается более 5 активных процессов Python.
Как я могу это исправить или хотя бы отладить?

Подробнее здесь: https://stackoverflow.com/questions/793 ... open-files
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»