Heim  >  Artikel  >  Backend-Entwicklung  >  Sieben Gewohnheiten zur Verbesserung der Leistung von Python-Programmen

Sieben Gewohnheiten zur Verbesserung der Leistung von Python-Programmen

WBOY
WBOYnach vorne
2023-04-16 18:01:03616Durchsuche

Sieben Gewohnheiten zur Verbesserung der Leistung von Python-Programmen

1. Verwenden Sie lokale Variablen

Versuchen Sie, lokale Variablen anstelle globaler Variablen zu verwenden: um die Wartung zu erleichtern, die Leistung zu verbessern und Speicherplatz zu sparen.

Ersetzen Sie Variablen im Modul-Namespace durch lokale Variablen, zum Beispiel ls = os.linesep. Einerseits kann es die Programmleistung verbessern und die Suche nach lokalen Variablen beschleunigen; andererseits können kurze Bezeichner verwendet werden, um lange Modulvariablen zu ersetzen, um die Lesbarkeit zu verbessern.

2. Reduzieren Sie die Anzahl der Funktionsaufrufe

Bei der Beurteilung des Objekttyps ist die Verwendung von isinstance() die beste, die Verwendung der Objekttypidentität (id()) die zweitbeste und die Verwendung des Objektwerts (type()) ) ist das letzte.

#判断变量num是否为整数类型
type(num) == type(0) #调用三次函数
type(num) is type(0) #身份比较
isinstance(num,(int)) #调用一次函数

Fügen Sie den Inhalt wiederholter Vorgänge nicht als Parameter in Schleifenbedingungen ein, um wiederholte Vorgänge zu vermeiden.

#每次循环都需要重新执行len(a)
while i < len(a):
statement
#len(a)仅执行一次
m = len(a)
while i < m:
statement

Wenn Sie eine Funktion oder ein Objekt Y in Modul X verwenden müssen, sollten Sie direkt from X import Y anstelle von import X.Y verwenden. Auf diese Weise kann bei Verwendung von Y eine Abfrage reduziert werden (der Interpreter muss nicht zuerst das X-Modul finden und dann im Wörterbuch des X-Moduls nach Y suchen).

3. Verwenden Sie Mapping anstelle der bedingten Suche.

Die Suchgeschwindigkeit von Mappings (z. B. Diktat usw.) ist viel schneller als bei bedingten Anweisungen (z. B. if usw.). In Python gibt es auch keine Select-Case-Anweisung.

#if查找
if a == 1:
b = 10
elif a == 2:
b = 20
...
#dict查找,性能更优
d = {1:10,2:20,...}
b = d[a]

4. Sequenzelemente direkt iterieren

Bei Sequenzen (Str, Liste, Tupel usw.) ist das direkte Iterieren von Sequenzelementen schneller als das Iterieren des Index von Elementen.

a = [1,2,3]
#迭代元素
for item in a:
print(item)
#迭代索引
for i in range(len(a)):
 print(a[i])

5. Verwenden Sie Generatorausdrücke, um das Listenverständnis zu ersetzen. Das Listenverständnis (Listenverständnis) generiert eine vollständige Liste, was sich negativ auf die Iteration großer Datenmengen auswirkt.

Der Generatorausdruck tut dies nicht, er erstellt eigentlich keine Liste, sondern gibt einen Generator zurück, der bei Bedarf einen Wert erzeugt (verzögerte Berechnung), was speicherschonender ist.

#计算文件f的非空字符个数
#生成器表达式
l = sum([len(word) for line in f for word in line.split()])
#列表解析
l = sum(len(word) for line in f for word in line.split())

6. Zuerst kompilieren und dann aufrufen

Wenn Sie die Funktionen eval() und exec() zum Ausführen von Code verwenden, ist es am besten, das Codeobjekt aufzurufen (vorher über die Funktion „compile()“ in Bytecode kompiliert). Anstatt str direkt aufzurufen, können wiederholte Kompilierungsvorgänge vermieden und die Programmleistung verbessert werden.

Der Mustervergleich für reguläre Ausdrücke ist ähnlich. Es ist auch am besten, das Muster für reguläre Ausdrücke in ein Regex-Objekt zu kompilieren (über die Funktion re.complie()), bevor Sie den Vergleich und den Abgleich durchführen.

7. Programmiergewohnheiten des Moduls

Die Python-Anweisung der höchsten Ebene (Code ohne Einrückung) im Modul wird ausgeführt, wenn das Modul importiert wird (unabhängig davon, ob die Ausführung wirklich erforderlich ist). Daher sollten Sie versuchen, alle Funktionscodes des Moduls in Funktionen zu packen, einschließlich der Funktionscodes, die sich auf das Hauptprogramm beziehen. Diese können auch in der Funktion main () platziert werden, und das Hauptprogramm selbst ruft die Funktion main () auf .

Sie können Testcode in die Funktion main() des Moduls schreiben. Überprüfen Sie im Hauptprogramm den Wert von „main“ (was anzeigt, dass das Modul direkt ausgeführt wird), rufen Sie die Funktion „main()“ auf und führen Sie einen Test durch, wenn es sich um den Namen des Moduls handelt Modul aufgerufen wird), wird kein Test durchgeführt.

Das obige ist der detaillierte Inhalt vonSieben Gewohnheiten zur Verbesserung der Leistung von Python-Programmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen