Selenium webdriver ест всю память в цикле

У меня проблема с процессами и использованием памяти. Я создал скрипт для анализа некоторых веб-страниц с использованием selenium webdriver с PhantomJS. Скрипт отлично работает, но мой код нуждается в некоторой оптимизации.

Я запускаю скрипт, и через мгновение моя память заполнена, потому что у меня много процессов phantomjs.

Как это исправить? мой код:

server.py

from selenium import webdriver
import radio
import urllib2
class Server(object):
 running = False
 radio_dir = "db/radio.txt"
 def __init__(self):
 """Choose browser from selenium webdrivers"""
 self.browser2 = webdriver.PhantomJS()
 self.r = radio.RadioParser(self.browser2)
 self.running = True
 def loop(self):
 """main server loop"""
 while self.running:
 radio_str = self.r.parse()
 self.save(self.radio_dir, radiozet_str)
 time.sleep(30)
 def save(self, location, string):
 """Put location and string to override db files"""
 try:
 file = open(location, 'w')
 file.write(string)
 except IOError:
 print "IOError"
 finally:
 file.close()

if __name__ == "__main__":
 s = Server()
 s.loop()

и radio.py

class RadioParser(object):
 url = "http://www.radiourl/index.html"
 def __init__(self, browser):
 self.driver = browser
 def parse(self):
 self.driver.get(self.url)
 song = (self.driver.find_element_by_class_name("artist").text +u" - " +
 self.driver.find_element_by_class_name("album").text)
 print song
 return str(song)
1 ответ

Вы должны закрыть свой webdriver, используя

self.driver.quit()

licensed under cc by-sa 3.0 with attribution.