我是Python和GUI编程的新手,并且一直在学习Tkinter包以进一步发展。
我编写了一个简单的数据记录器,它通过串行或TCP连接向设备发送命令,然后读取响应,将其显示在ScrolledText小部件中。另外,我有一个按钮,允许我将ScrolledText小部件的内容保存到文本文件中。
我通过发送循环命令来测试我的软件,命令之间有0.5秒的延迟。目的是测试记录器的耐用性,以便以后可以部署它来自动监视和记录它所连接的设备的输出。
30-40分钟后,我发现该程序在我的Windows 7系统上崩溃,我怀疑它可能是由内存问题引起的。崩溃是一个相当不起眼的问题," pythonw.exe已停止工作"信息。当我使用Windows任务管理器监视进程时,每次读取响应时pythonw.exe使用的内存都会增加,最终将达到近2Gb。
可能需要重新考虑我的逻辑并让软件实时登录到磁盘,而ScrolledText框会在x行数之后覆盖最旧的数据...但是,对于我自己的教育,我想知道是否有更好的方法来管理ScrolledText使用的内存?
提前致谢!
答案 0 :(得分:0)
通常,不,写入滚动文本小部件没有内存限制。在内部,文本存储在有效的b树中(有效,除非所有数据都是单行,因为b树离开是行)。可能存在某种限制,但可能会有数百万行左右。