【发布时间】:2021-01-12 17:11:42
【问题描述】:
我正在制作一个基于 Tkinter 的项目,其中数组大小有时会高达 10^9 甚至更多(尽管更多的可能性很小)。
早些时候我使用了一个使用循环的简单数组,但是在一个大小为 10^6 或更大的数组中花费了很多时间,所以我决定将我的方法切换到 NumPy,在大多数情况下,它给出了更好的结果,但在上述条件(大小> = 10 ^ 9),程序只是冻结(有时甚至计算机也会冻结,除了强制重启之外别无选择),这与简单的循环方法不同,即使对于更大的列表大小也会给出结果,但是,花费了很多时间。
我看了this,但它涉及到诸如使用堆内存、堆栈大小之类的术语,而我对这些东西知之甚少。
我不太习惯堆栈平台,因此不胜感激。
更新:我正在添加我尝试用 numpy 替换普通列表的代码块。注释行是我之前在简单列表中使用的行。
def generate(self):
# t is number of times we need to generate this list
for i in range(self.t):
self.n = randint(self.n_min, self.n_max) # constraints
# self.a = [0] * self.n
self.a = np.random.randint(low=self.a_min, high=self.a_max, size=self.n)
# for j in range(self.n):
# self.a[j] = randint(self.a_min, self.a_max)
然后将所有这些值插入到 Tkinter GUI 的输出屏幕中,
这里的 'n' 即 NumPy 数组的大小有时可以取非常高的值。
我在双启动 (win+ubuntu) 上,目前的情况是在 ubuntu 上,我分配了 500 GB 的存储空间,我的笔记本电脑的 RAM 是 8 GB。
【问题讨论】:
-
查看导致问题的代码并了解您的计算机中有多少内存会很有帮助。
-
另外,请查看How to Ask 和其他关于在help center 中提问的页面
-
我已经添加了导致问题的一段代码。感谢您添加额外的资源,我会尽量遵守这些准则。
标签: python python-3.x list numpy tkinter