ffprobe 产生内存 link
ffprobe produce memory link
我正在编写 python 脚本来计算目录(以及子目录、链接等)中所有视频文件的持续时间。
一切正常,我唯一的问题是以下代码产生了内存泄漏。我对每个媒体文件使用此函数来获取持续时间。并且分配的内存显着增加。每秒 50 兆字节。当函数 returns 的值内存没有被释放。即使在关闭所有程序或在 Windows 中注销后,内存也没有消失。只有重新启动才有帮助。
def probe(vid_file_path):
with subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) as proc:
cmd = ["ffprobe", "-loglevel", "quiet", "-print_format", "json", "-show_format", "-show_streams", vid_file_path]
out, err = proc.communicate()
return json.loads(out)
我花了几个小时试图弄清楚问题是出在 ffprobe 上还是子进程上。我认为是ffprobe。
如果我这样做:
cd "<goto ffprobe directory>"
:start
ffprobe -show_streams "<a video file>"
goto start
在批处理文件中我可以看到内存也在增加。
EDIT1:如果你想测试我的 python 脚本,请看这里:https://pastebin.com/NewBgwia
Microsoft Defenders“受控文件夹访问”是我问题的根源。
禁用它解决了我的内存泄漏问题。
我正在编写 python 脚本来计算目录(以及子目录、链接等)中所有视频文件的持续时间。
一切正常,我唯一的问题是以下代码产生了内存泄漏。我对每个媒体文件使用此函数来获取持续时间。并且分配的内存显着增加。每秒 50 兆字节。当函数 returns 的值内存没有被释放。即使在关闭所有程序或在 Windows 中注销后,内存也没有消失。只有重新启动才有帮助。
def probe(vid_file_path):
with subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) as proc:
cmd = ["ffprobe", "-loglevel", "quiet", "-print_format", "json", "-show_format", "-show_streams", vid_file_path]
out, err = proc.communicate()
return json.loads(out)
我花了几个小时试图弄清楚问题是出在 ffprobe 上还是子进程上。我认为是ffprobe。
如果我这样做:
cd "<goto ffprobe directory>"
:start
ffprobe -show_streams "<a video file>"
goto start
在批处理文件中我可以看到内存也在增加。
EDIT1:如果你想测试我的 python 脚本,请看这里:https://pastebin.com/NewBgwia
Microsoft Defenders“受控文件夹访问”是我问题的根源。 禁用它解决了我的内存泄漏问题。