「已注销」 2023-03-03 23:09 采纳率: 42.9%
浏览 12

为什么电脑突然加载不了gif文件?

为什么我编的录频程序那么费内存?
每到加载gif时就黑屏
代码如下:

if __name__=='__main__':
        from tkinter import messagebox as mess
        from tkinter.ttk import Button as Btt
        from tkinter import Tk
        from tkinter import Button as Btk
        from sys import exit as exit_
        import time
        from PIL import ImageGrab as g
        from pynput import keyboard as k
        from threading import Thread
        def save():
            print('save go')
            v[0].save('giffile.gif',format='gif',save_all=True,append_images=v[1:],duration=60)
        print('1')
        def quit():
            print('END')
            win.destroy()
            exit_()#退出程序
        print(2)
        def go():
            win.destroy()

            def quit_l(k):
                print(k)
                print('qui_l.go')
                if k==GJ_key.ctrl_l:
                    print('按下ctrl')
                    f_e=0
                    thsave.start()
            def go():
                print('Go!Go!Go!')
                while f_e!=0:
                    v.append(g.grab())
                    time.sleep(0.03)
            global v
            v=[]
            global f_e
            f_e=1
            f1=0
            global thsave
            global GJ_key
            GJ_key=k.Key
            thgo=Thread(target=go)
            thsave=Thread(target=save)
            pnl=k.Listener(on_press=quit_l)
            #当按下某键启动quit函数,松开某键启动puit_f函数
            pnl.start()#开始检测
            thgo.start()
        print(3)
        win=Tk()
        win.overrideredirect(True)
        win.resizable(0,0)
        win.geometry('200x100+0+0')
        Btk(win,text='退出',\
        bg='red',\
        fg='black',\
        width=5,\
        command=quit).pack(side='left',fill='y')
        Btt(win,text='开始',command=go).pack(side='left',fill='both')
        win.mainloop()




当按下ctrl键时停止录频并加载gif,为什么我的就是加载不出来?而且加载时内存占用变得非常高,不断上升,从20%到30%,50%,达到95%,我的电脑直接黑屏,我蒙了。以前还很流畅,windows报错说某东西损坏就加载不了了。是不是是我的程序问题?如是,请指出,谢谢。
(我截不了屏,当内存占用率达到将近100%时不可能截屏了,直接黑屏,所以无法提供图片)

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-03-03 23:21
    关注

    基于Monster 组和GPT的调写:

    • 你的程序可能存在一些内存泄漏的问题,导致内存占用不断上升并最终导致程序崩溃。以下是一些可能引起内存泄漏的原因和建议的解决方法:
    • 没有正确地关闭打开的文件和资源。在程序结束前确保关闭所有已打开的文件和释放占用的资源,例如使用with语句来处理文件。
    • 没有及时删除不再需要的对象。对于不再需要的对象,可以使用del语句来手动删除它们。例如,在保存完所有帧后,可以手动删除v列表以释放占用的内存。
    • 可能存在循环引用的问题。如果对象之间存在循环引用,那么它们的引用计数永远不会达到零,因此它们的内存将不会被释放。你可以使用Python内置的gc模块来帮助诊断和解决这种问题。
    • 可能使用了一些会占用大量内存的数据结构或算法。例如,如果你使用了一个非常大的列表或字典,那么它将占用大量的内存。尽量避免使用这些大型数据结构或优化它们的使用。
    • 可能存在其他的性能问题或错误。你可以使用Python内置的profile或cProfile模块来分析程序的性能和瓶颈,并解决可能存在的问题。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月3日

悬赏问题

  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库