Отличный вопрос. В принципе это связано с тем, что Parameter
объекты являются подклассом sympy.Symbol
, а из его строки документации:
Symbols are identified by name and assumptions:
>>> from sympy import Symbol
>>> Symbol("x") == Symbol("x")
True
>>> Symbol("x", real=True) == Symbol("x", real=False)
False
Это имеет основополагающее значение для внутренней работы sympy
, и поэтому мы также используем в symfit
. Но значение и фиксированные аргументы не рассматриваются как предположения, поэтому они не используются для различения параметров.
model = sf.Model({y:a*x+b})
b.fixed = True
fit_results = []
for b_value, xdata, ydata in datastream:
b.value = b_value
fit = Fit(model, x=xdata, y=ydata)
fit_results.append(fit.execute())
Поэтому нет необходимости определять новый Parameter
на каждой итерации, атрибут b.value
будет одинаковым в каждом цикле, так что это не может пойти не так. Единственный способ, которым я могу представить, что это идет не так, это если вы используете threading
, это, вероятно, создаст некоторые условия гонки. Но threading
нежелательно для задач, связанных с процессором, в любом случае, multiprocessing
- это путь. И в этом случае отдельные процессы будут порождаться, создавая отдельные микрокосмы, поэтому здесь также не должно быть проблем.
Я надеюсь, что это ответит на ваш вопрос, если не дайте мне знать.
p.s. Я медленно отвечаю на свой путь до 1500, чтобы сделать этот тег, но если кто-то превзойдет меня, я, конечно же, буду счастливее;)
Просто помните, что php на самом деле не поддерживает исходные файлы в кодировке utf-8. При создании строк в файле с кодировкой utf-8 php будет видеть только 2 статических байта на символ.
Попробуйте выполнить следующее с включением utf-8 или ISO-8859-1. strlen () сообщает о разной длине в зависимости от кодировки.
<?php
$string = "äüö";
echo (strlen($string));
?>