Я ищу эффективный способ вычисления результата (сложной) математической функции.
прямо сейчас он выглядит сопоставимым с:
def f(x):
return x**2
def g(x):
if not x: return 1
return f(x)*5
def h(x):
return g(x)
with concurrent.futures.ProcessPoolExecutor() as executor:
print(list(executor.map(h, params)))
, поскольку каждый вызов функции дорого в Python, код уже должен работать быстрее, если f (x) объединить с g (x). К сожалению, в этом случае строка return ... функции g (x) уже становится очень длинной. Более того, в настоящее время всего определено 6 функций, поэтому полная формула занимает несколько строк.
Итак, какой же умный способ вычислить результат формулы физики?
РЕДАКТИРОВАТЬ:
Пока спасибо, но мой вопрос на самом деле не об этом конкретном c фрагменте кода, а о способе реализации физических формул в Python. Например, можно также определить выражение как строку и оценить его с помощью eval (), но это явно медленнее.
Чтобы быть более конкретным c У меня есть потенциал и я хочу реализовать его параллельно. Поэтому я вызываю свою версию «h (x)», используя функцию карты ProcessPoolExecutor (каждый раз с разными значениями). Но лучше ли определять функцию как функцию, которая вызывает другие функции или использует переменные? Есть способ более действенный?