输出到ScrolledText小部件时是否存在内存限制?

时间:2015-04-27 13:05:38

标签: memory logging textbox tkinter python-3.4

我是Python和GUI编程的新手,并且一直在学习Tkinter包以进一步发展。

我编写了一个简单的数据记录器,它通过串行或TCP连接向设备发送命令,然后读取响应,将其显示在ScrolledText小部件中。另外,我有一个按钮,允许我将ScrolledText小部件的内容保存到文本文件中。

我通过发送循环命令来测试我的软件,命令之间有0.5秒的延迟。目的是测试记录器的耐用性,以便以后可以部署它来自动监视和记录它所连接的设备的输出。

30-40分钟后,我发现该程序在我的Windows 7系统上崩溃,我怀疑它可能是由内存问题引起的。崩溃是一个相当不起眼的问题," pythonw.exe已停止工作"信息。当我使用Windows任务管理器监视进程时,每次读取响应时pythonw.exe使用的内存都会增加,最终将达到近2Gb。

可能需要重新考虑我的逻辑并让软件实时登录到磁盘,而ScrolledText框会在x行数之后覆盖最旧的数据...但是,对于我自己的教育,我想知道是否有更好的方法来管理ScrolledText使用的内存?

提前致谢!

1 个答案:

答案 0 :(得分:0)

通常,不,写入滚动文本小部件没有内存限制。在内部,文本存储在有效的b树中(有效,除非所有数据都是单行,因为b树离开是行)。可能存在某种限制,但可能会有数百万行左右。