我在 Sage(一个用 python 编写的计算机代数系统,您可以在脚本中使用常规 python 语法)编写了一些非常简单的试错代码。这个小代码片段创建了一个多项式并使用系数进行了一些计算,特别是它确定了系数中三个表达式生成的理想值的 Groebner 基。
问题是:这个程序继续运行并吃掉我所有的内存,直到它被内核杀死。每次迭代只消耗大约 200kB,但这个内存永远不会再被释放。
这是代码。细节不是那么重要且非常庞大,因此省略了:
R = PolynomialRing(QQ, 2, 'bc', order='lex')
expr1, expr2, expr3 = ...
for i in range (0,50):
for j in range(i+1,50):
for k in range(j+1,50):
for l in range(k+1,50):
for m in range(l+1,50):
for n in range(m+1,50):
poly = (x-i)*(x-j)*(x-k)*(x-l)*(x-m)*(x-n)
r = poly.coeffs()
p1 = expr1.substitute(r...)
p2 = expr2.substitute(r...)
p3 = expr3.substitute(r...)
I = (p1, p2, p3)*R
B = I.groebner_basis()
据我了解python的内存管理,循环体中的变量经常被释放。现在,它可能是编程问题、内部 python 问题或 Sage 例程中的某些问题。我不知道。你能发现我的代码有问题还是其他问题?