Czy jest jakiś efekt nieużywanych importów w skrypcie Pythona?Czy nieużywany import w Pythonie hamuje wydajność?
Każdy rodzaj odpowiedzi jest mile widziany.
Czy jest jakiś efekt nieużywanych importów w skrypcie Pythona?Czy nieużywany import w Pythonie hamuje wydajność?
Każdy rodzaj odpowiedzi jest mile widziany.
Możesz zanieczyścić przestrzeń nazw nazwami, które mogą zakłócać twoje zmienne i zajmować trochę pamięci.
Również będziesz mieć dłuższy czas uruchamiania, ponieważ program musi załadować moduł.
W każdym razie nie stałbym się zbyt neurotyczny, jak gdybyś pisał kod, który mógłbyś napisać i usunąć import os
w sposób ciągły w miarę modyfikacji kodu. Niektóre IDE jako PyCharm wykrywają nieużywane importowanie, więc możesz polegać na nich po zakończeniu lub prawie ukończeniu kodu.
„Nieużywane” może być nieco trudniejsze do zdefiniowania, niż myślisz, na przykład ten kod w test.py:
import sys
import unused_stuff
sys.exit(0)
unused_stuff wydaje się być nieużywany, ale gdyby zawierać:
import __main__
def f(x): print "Oh no you don't"
__main__.sys.exit = f
Następnie uruchomienie test.py nie robi tego, czego można się spodziewać po zwyczajnym spojrzeniu.
nadzieję, że nikt nie pisze bibliotek z takim kodem. Ten import byłby niebezpieczny, nawet gdyby OP planował ** użyć ** tego modułu. – joaquin
@joaquin Prawdą jest, że jest to skrajny przykład, ale to nie znaczy, że nie ma modułów, które po załadowaniu mają bardziej subtelne efekty uboczne. Miało to być trywialną ilustracją efektu ubocznego :) – Flexo
Mam dwa moduły, które mam w mojej osobistej bibliotece, której jedynym API jest import, to znaczy, że wszystko, co robisz, to importować je bez połączenia. Pierwszym z nich jest program nice.py, który uruchamia program z niższym priorytetem procesu, drugi to timing.py, który instaluje procedurę obsługi atexit, aby zgłosić czas i znacznik czasu, gdy uruchomiony program się zakończy. Oba mogą wyglądać na nieużywane, ale w rzeczywistości mają tylko super-minimalistyczny interfejs API. – PaulMcG
Program potrwa zatem dłużej niż w przypadku niepotrzebnego importu. dobrze ? –
prawdą, że to prawda – joaquin
Opóźnienie czasu uruchomienia można wizualizować, tworząc kilka plików z 'print" Hello ", __name__', a następnie importując je. Wszystko, co zaimportowane, musi zostać przeanalizowane co najmniej raz, a następnie wersja programu pyc/cache jest interpretowana co najmniej raz na cykl. To może trochę wymknąć się spod kontroli, szczególnie jeśli jeden importowany plik importuje inne pliki, które importują jeszcze więcej plików. – David