Python 3, «RecursionError: максимальная глубина рекурсии, превышенная во время компиляции» - PullRequest
0 голосов
/ 30 апреля 2019

Я использую python 3.7 с sympy и numpy, чтобы найти корни производной нескольких выражений одной переменной, все они хранятся в одном файле (см. Ниже). У меня есть 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? Кроме того, это связано с порождением слишком большого числа процессов или слишком сложными / длинными выражениями? Если да, как я могу исправить эту ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...