python - 我是否在 Python 中有效地使用 memory_usage 以及为什么会出现奇怪的行为?
问题描述
我可以使用一些帮助来清除一些利用“memory_profiler”中的“memory_usage”的python代码。该代码在语法上似乎有效,但是我不相信我从我的 memory_usage 调用中获得了准确的读数,并且我认为我可能做错了什么,因为这部分代码表现出一些奇怪的行为。
程序概述- 该代码是一个菜单驱动程序,允许用户指定数组的大小,用随机生成的数字填充该数组,然后应用各种排序算法来测量执行时间和内存利用率。为了测量时间,我使用“timeit”来测量我尝试使用“memory_usage”的内存。
程序结构——程序的主体主要是一个菜单,当用户在菜单中选择该算法时,该菜单对每个排序或计数算法进行函数调用。完成初始选择后,系统会提示用户指定他们想要构建的数组的所需大小
tempArray = [randint(1, 10000) for i in range(size)]
。构建数组后,用户可以选择是否要测量执行时间或内存利用率。问题- 每当程序通过以下命令调用“memory_usage”时,它需要永远(即使使用“计数器”在 15 个数字的数组中查找“.most_common”事件)。它还通过阻止我结束程序(使用运行主菜单的“while True”循环中的“break”)来创建一些奇怪的行为。最终它将允许我在几个转义序列后退出,同时最终在退出时打印“MAX memory usage...”,但结果似乎不准确(即.. 27MB 来运行这个函数?)。
这是有问题的主要代码...
if (structure == 1):
tempArray = [randint(1, 10000) for i in range(size)]
# Use the collections module counter class to count elements of the array
print(most_frequent(tempArray))
# To turn on memory analysis and check spacial usage
mem_usage = memory_usage((most_frequent, (tempArray,)))
print ("\nMAX memory usage in MB: ",max(mem_usage))
如果有帮助,这是返回数组中最常出现的元素的简短函数
# Function to determine entry frequency of an array or heap
def most_frequent(data):
elements_count = Counter(data)
# Return frequency counts
return elements_count.most_common(10)
很高兴分享任何有用的附加代码。
也许我对 memory_profilier 的新手知识正在显示,或者也许有更好的方法来做到这一点。我愿意接受任何反馈、想法或建议。感谢任何帮助,tnx!
解决方案
推荐阅读
- django - 在 DJANGO(REST) 中登录时删除用户名字段
- excel - 工作表成为工作簿元素
- dictionary - 地图区域坐标
- visual-studio-code - VSCode 信息
- typescript - 当类型“any”与其他类型不兼容时
- json - 使用 JSurfer 或类似方法将 JSON 解析为 Java POJO 列表
- typescript - 如何调用删除方法来运行索引的所有实例
- ios - 标签栏不显示
- node.js - 对话框流中的 SOAP API
- amazon-web-services - 如何在 SAM 模板中将布尔值放在 CloudWatchEvent 模式上