Почему моя память и раздел подкачки заполняются этим многопроцессорным кодом на python? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь запустить какой-то код Selenium, который через некоторое время выдает ошибку из-за сбоя сетевых запросов. Поэтому я пытаюсь запустить 3 различных процесса, которые перезапускаются через 10 минут. Но через несколько часов мне сказали, что памяти не осталось. Итак, я начал смотреть на использование в в htop, и когда я уменьшаю временной интервал до 10 секунд, память уходит быстрее. Я пытаюсь понять, что я могу сделать, чтобы этого не случилось. У меня есть скрипт, который я запускаю в каждом процессе, и я хочу завершить его, освободить все его ресурсы и перезапустить.

    procs = []
    while(True):
        for i in range(numProcs):
            procs.append(Process(target = run, args = (lock, )))
            if procs[i].is_alive() == False:
                procs[i].start()
                print(procs[i].pid)
        time.sleep(60*10)
        for i in range(numProcs):
            procs[i].terminate()
            print("terminating process")
        procs = []

Я уже связывал удаление процессов по отдельности из списка как третий цикл for. Знал, что это не сработает.

Когда я убиваю основной скрипт, который управляет процессами, память освобождается, я верю. Мой раздел подкачки остается заполненным.

Перезапуск моей машины - единственное, что я делал, чтобы решить проблему, когда она возникает.

...