Код, который я пишу, я запускаю scipy.curve_fit()
десятки тысяч раз. Я заметил в соответствующий curve_fit()
исходный код, особенно в строках 430 и 431 в источник (в функции leastsq()
) есть два оператора import
:
from numpy.dual import inv
from numpy.linalg import LinAlgError
Я вызываю curve_fit()
внутри цикла. Мне интересно, сохраняются ли модули, загруженные этими операторами import
, после завершения итерации цикла или модули выходят за рамки и их необходимо перезагружать на каждой итерации цикла.
Примечание. Операторы import
вызываются только в том случае, если оператор if full_output:
в строке 427 исходного кода имеет значение true. full_output=1
- это то, что передается в leastsq()
с помощью curve_fit()
, поэтому операторы import
действительно вызываются.
Дополнительное примечание: я спрашиваю не об импорте модулей несколько раз (настолько), а о том, доступен ли коду модуль, импортированный в цикле, после завершения цикла (или после каждой итерации цикла). петля).
Дополнительные примечания:
>>>for x in range(0,1):
... import os
...
>>> os
<module 'os' from '/home/lars/env/common/lib64/python2.7/os.pyc'>
это работает, но если я вместо этого определяю функцию:
def a(b):
if a==True:
import scipy
тогда
for i in range(10):
a(True)
scipy
NameError: name 'scipy' is not defined
Что случилось с этим?