Untuk kode yang saya tulis, saya menjalankan scipy.curve_fit()
puluhan ribu kali. Saya perhatikan di kode sumber curve_fit()
yang relevan, khususnya pada baris 430 dan 431 di sumber (dalam fungsi leastsq()
), ada dua pernyataan import
:
from numpy.dual import inv
from numpy.linalg import LinAlgError
Saya memanggil curve_fit()
di dalam satu lingkaran. Saya bertanya-tanya apakah modul yang dimuat oleh pernyataan import
ini disimpan setelah iterasi loop selesai atau apakah modul berada di luar cakupan dan perlu dimuat ulang di setiap iterasi loop.
Catatan: pernyataan import
hanya dipanggil jika pernyataan if full_output:
pada baris 427 kode sumber bernilai benar. full_output=1
adalah apa yang diteruskan ke leastsq()
oleh curve_fit()
, sehingga pernyataan import
memang disebut.
Catatan tambahan: Saya tidak bertanya tentang mengimpor modul beberapa kali (begitu banyak), melainkan apakah modul yang diimpor dalam satu perulangan masih dapat diakses oleh kode setelah perulangan selesai (atau setelah setiap iterasi dari lingkaran).
Catatan lebih lanjut:
>>>for x in range(0,1):
... import os
...
>>> os
<module 'os' from '/home/lars/env/common/lib64/python2.7/os.pyc'>
ini berfungsi, tetapi jika saya mendefinisikan suatu fungsi:
def a(b):
if a==True:
import scipy
Kemudian
for i in range(10):
a(True)
scipy
NameError: name 'scipy' is not defined
Ada apa dengan itu?