我正在EC2实例(ubuntu)上运行使用硒的python脚本。
根据我的AWS计划,我有2 GB内存。脚本出现性能问题后,我从免费版本升级到了此版本。但是,当我在连接到ubuntu服务器时检查可用内存时,只看到348MB可用内存和353MB可用内存!
截至目前,我每天仅使用crontab运行两个python脚本。这些脚本通过相当长的网址数组运行,并从每个网址中获取信息。
base_url = 'https://www.bandsintown.com/en/c/san-francisco-ca?page='
events = []
eventContainerBucket = []
for i in range(1,25):
#cycle through pages in range
driver.get(base_url + str(i))
pageURL = base_url + str(i)
# get events links
event_list = driver.find_elements_by_css_selector('div[class^=_3buUBPWBhUz9KBQqgXm-gf] a[class^=_3UX9sLQPbNUbfbaigy35li]')
# collect href attribute of events in even_list
events.extend(list(event.get_attribute("href") for event in event_list))
allEvents = []
for event in events:
driver.get(event)
//do a bunch of other stuff
driver.quit()
有人能在此代码中看到一个固有的问题,它将导致内存泄漏吗?我认为脚本停止运行后,可用内存应该会再次增加,但事实并非如此。
我试图在for循环中调用driver.close()
,以便从每个URL检索信息后,窗口关闭。我当时以为这会有助于内存泄漏-不幸的是,这给了我一个错误selenium.common.exceptions.InvalidSessionIdException: Message: invalid session id
。
任何帮助将不胜感激。我是否在使用driver.close()的正确路径上,还是其他完全是问题所在?
代替驱动程序退出,您是否尝试过driver.close()
?
close()-用于关闭浏览器
quite()-用于关闭Web驱动程序实例。
for i in range(1,25):
#cycle through pages in range
driver.get(base_url + str(i))
pageURL = base_url + str(i)
# get events links
event_list = driver.find_elements_by_css_selector('div[class^=_3buUBPWBhUz9KBQqgXm-gf] a[class^=_3UX9sLQPbNUbfbaigy35li]')
# collect href attribute of events in even_list
events.extend(list(event.get_attribute("href") for event in event_list))
allEvents = []
for event in events:
driver.get(event)
driver.close()
我已经检查了您的代码,可以正常工作,没有任何问题。请在下面的屏幕截图中找到更多详细信息