作者piligo (霹雳狗)
看板Python
标题Re: [问题] Selenium如何释放资源
时间Wed Jul 28 22:26:23 2021
请问有关atexit.register这个功能是不是一执行python就立即触发预载了?
因为Ctrl+C都还没送chrome视窗就被关闭了
这个问题要怎麽解呢?
谢谢
===================================================================
7/29修正
只要加了下文红字区段,下Ctrr+C呼叫driver.quit()就会无效
import sys
import atexit
from selenium import webdriver
def cleanup_function():
driver.quit()
sys.exit(0)
atexit.register(cleanup_function)
url="
http://google.com"
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(
options=options)
driver.get(url)
input("")
===================================================================
7/31更新 用此方法成功
import sys
import os
import atexit
import psutil
from selenium import webdriver
def cleanup_function():
for child in parray:
killpid="taskkill /f /pid "+('{}'.format(child.pid))
os.system(killpid)
sys.exit(0)
atexit.register(cleanup_function)
url="
http://google.com"
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
driver = webdriver.Chrome(options=options)
driver.get(url)
p = psutil.Process(driver.service.process.pid)
parray=p.children(recursive=True)
input("")
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.104.34.155 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1627482385.A.FB9.html
1F:→ piligo: win32api.SetConsoleCtrlHandler也是一样状况 07/29 00:16
※ 编辑: piligo (106.104.34.155 台湾), 07/29/2021 09:55:41
3F:→ piligo: 试了老半天 原来是这两行在作怪 我有标红字那段 07/29 13:10
※ 编辑: piligo (106.104.34.155 台湾), 07/29/2021 13:11:47
4F:→ piligo: 当我把红字清空就不影响atexit的动作 这是什麽状况呢 07/29 13:12
※ 编辑: piligo (106.104.34.155 台湾), 07/29/2021 13:20:13
5F:推 lycantrope: clearup_function要传入你当下的driver吧? 07/29 13:23
6F:→ lycantrope: 我不太确定是不是因为你用global driver造成 07/29 13:24
7F:→ lycantrope: 我也测过红字没问题 07/29 13:24
8F:→ piligo: 我把driver改名字了没效 红字没问题但ctrl+c不会关闭网页 07/29 13:30
9F:→ piligo: 我加红字是为了让DevTools listening on不会出现 还是有 07/29 13:31
10F:→ piligo: 其他方式可以不显示DevTools listening on 07/29 13:31
11F:推 lycantrope: 是说有这麽复杂吗不能用try finally driver.quit()? 07/29 14:39
12F:→ piligo: 我试了try还是无效 只要搭配红字ctrl+c呼叫driver.quit() 07/29 23:21
13F:→ piligo: 就没反应 红字一拿掉就正常 07/29 23:22
14F:→ piligo: 最後靠psutil+atexit呼叫taskkill来达成 07/30 23:34
※ 编辑: piligo (106.104.34.155 台湾), 07/31/2021 00:12:43