Pytanie o to, jak przyspieszyć importowanie modułów Pythona zostało zadane wcześniej (Speeding up the python "import" loader i Python -- Speed Up Imports?), ale bez konkretnych przykładów i nie przyniosło akceptowalnych rozwiązań. W związku z tym przejdę do tej kwestii ponownie, ale tym razem z konkretnym przykładem.poprawa szybkości importu modułu Python
Mam skrypt w języku Python, który ładuje stos obrazów 3D z dysku, wygładza go i wyświetla jako film. Wywołuję ten skrypt z wiersza poleceń systemu, gdy chcę szybko wyświetlić moje dane. Jestem w porządku z 700 ms, które zajmuje wygładzenie danych, ponieważ jest to porównywalne z MATLAB. Jednak importowanie modułów zajmuje dodatkowe 650 ms. Z perspektywy użytkownika kod Pythona działa z połową prędkości.
Jest to seria modułów jestem importowania:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy.ndimage
import scipy.signal
import sys
import os
Oczywiście, nie wszystkie moduły są równie wolno importować. Główni winowajcy są:
matplotlib.pyplot [300ms]
numpy [110ms]
scipy.signal [200ms]
I eksperymentowali z użyciem from
, ale nie jest to szybciej. Ponieważ Matplotlib jest głównym winowajcą i ma reputację powolnych aktualizacji ekranu, szukałem alternatyw. Jednym z nich jest PyQtGraph, ale importowanie trwa 550 ms.
Jestem świadomy jednego oczywistego rozwiązania, które polega na wywoływaniu mojej funkcji z interaktywnej sesji w Pythonie, a nie w wierszu poleceń systemu. To jest w porządku, ale jest zbyt podobna do MATLAB-u, wolałabym elegancję polegającą na tym, aby moja funkcja była dostępna z systemu.
Jestem nowy w Pythonie i nie jestem pewien, jak postępować w tym momencie. Ponieważ jestem nowy, chciałbym docenić linki na temat wdrażania proponowanych rozwiązań. Idealnie, szukam prostego rozwiązania (nie wszyscy jesteśmy!), Ponieważ kod musi być przenośny pomiędzy wieloma komputerami Mac i Linux.
Sprawdź, czy to produkcji .pyc wersje modułów Pythona - Loading tych jest nieco szybciej. Ale te liczby są całkiem prawdopodobne, nawet jeśli istnieją pliki Pyc. –
Ponadto, jeśli masz dużo katalogów .egg na 'sys.path', szuka modułów wewnątrz każdego, co spowalnia działanie. Użyj menedżera pakietów dystrybucyjnych lub pip, aby zainstalować je w lepszym układzie. Jednak mało prawdopodobne jest, że przyspieszysz. –
Zauważyłem sugestię pyc we wcześniejszym pytaniu, ale nie wiem, gdzie szukać wersji modułów pyc. Teraz jestem na Macu. – RAAC