Python 3,“ RecursionError:编译期间超出了最大递归深度”

时间:2019-04-30 05:43:14

标签: python numpy exception parallel-processing sympy

我正在使用带有sympy和numpy的python 3.7来查找一个变量的多个表达式的派生词根,这些表达式全部存储在单个文件中(请参见下文)。我有一个C程序,它为每个表达式生成大量运行以下脚本的进程(我正在并行查找派生根;可能生成了100多个进程)。请注意,表达式非常复杂,可能需要很长时间才能计算出来。这就是为什么我使用numpy而不是sympy来查找根的原因。

这是python代码的相关部分

#!/Users/user/anaconda3/bin/python
# -*- coding: utf-8 -*-
import sympy
import numpy
from sympy import Poly

import sys
from sys import argv


currentLine = 0
lineToCheck = int(argv[1]);
expression = ""
with open("file.txt", "r") as myFile:
    for line in myFile:
        if(lineToCheck == currentLine):
            expression = line
            break
        else:
            currentLine += 1

s = sympy.symbols('s')
expression = Poly(sympy.expand(sympy.diff(sympy.simplify(expression))), s)
roots = numpy.roots(expression.all_coeffs())
roots = numpy.sort(numpy.unique(roots[~numpy.iscomplex(roots)]))

在某些情况下(并非总是如此),当我运行此脚本时,会在产生的部分过程中得到以下错误。

RecursionError: maximum recursion depth exceeded during compilation

在线呼叫

expression = Poly(sympy.expand(sympy.diff(sympy.simplify(expression))), s)

我的问题如下。是什么导致此错误?我了解超出最大递归深度的含义,但在编译环境中则不行。这需要做python解释器吗?此外,这是否与产生太多进程或表达式太复杂/太长有关?如果是这样,我该如何解决该错误?

0 个答案:

没有答案