Heim > Backend-Entwicklung > Python-Tutorial > Verwendung von Python zur Implementierung leistungsstarker Testtools (1)

Verwendung von Python zur Implementierung leistungsstarker Testtools (1)

little bottle
Freigeben: 2019-04-10 15:34:36
nach vorne
3637 Leute haben es durchsucht

Wer mehrere Jahre lang entwickelt oder getestet hat, fühlt sich oft verwirrt. Die Entwicklung neuer Funktionen oder die Wartung alter Funktionen sind im Grunde ein Haufen Code. In diesem Artikel geht es hauptsächlich um die Leistungsoptimierung im Systemdesign und in der Architektur, damit jeder etwas lernen kann. Einige Inhalte betreffen bestimmte Produkte, einige Änderungen wurden vorgenommen oder Testcode-Demonstrationen wurden separat geschrieben.

Projekthintergrund:

Implementieren Sie ein leistungsstarkes Durchmessertesttool, akzeptieren Sie 1000 + senden Sie 1000 und unterstützen Sie bis zu 2000 Nachrichten pro Sekunde in beide Richtungen . Der Quellcode des Diameter-Protokolls wird von http://sourceforge.net/projects/pyprotosim/ heruntergeladen. Dieses Open-Source-Paket unterstützt auch SMPP, RADIUS, DHCP, LDAP und die neu hinzugefügten Protokollfelder können im Wörterbuch konfiguriert werden. Dies ist sehr praktisch, wenn Sie den Code ändern müssen. In der Anfangsphase haben wir bei der Implementierung von Funktionen an vielen Stellen keine Leistungsprobleme berücksichtigt, und die anfängliche Leistung konnte nur 50 Nachrichten unterstützen. Hardwareumgebung: SunFire 4170, 16 Kerne, 2,4 G pro Kern

Mehrere Richtungen zur Python-Leistungsoptimierung:

1. Ändern Sie den Python-Parser: Zu den gängigen Python-Parsern gehören Pysco, Pypy, Cython, Jython und Pysco-Nr Unterstützt Python 2.7 nicht mehr, daher gibt es keinen Test. Es wird gesagt, dass es genauso schnell läuft wie die C-Sprache. Ich habe einen einfachen Test mit Pypy und Jython durchgeführt. Obwohl Jython das Problem von Python GIL vermeiden kann (da Jython auf einer virtuellen Java-Maschine ausgeführt wird), scheint dies der Fall zu sein Effizienz Die Gewinne sind minimal.

2. Optimieren Sie den Code

3. Ändern Sie die Systemarchitektur, Multithreading, Multiprozess oder Coroutine

Option 1: Ändern des Python-Parsers

Wenn ein Ändern des Python-Parsers die Leistungsanforderungen erfüllen kann, ist es die günstigste Lösung und erfordert keine Änderungen am Code. Der folgende Code dient nur zur Veranschaulichung der Wirkung von Pypy. Es handelt sich um einen separat geschriebenen Testcode und das Ergebnis der Ausführung unter Windows. Der Laufeffekt ist auf einem Linux-Rechner besser.

#!/usr/bin/env python
#coding=utf-8

import  time

def check(num):
    a = list(str(num))
    b = a[::-1]
    if a == b:
        return True
    return False

def test():
    all = xrange(1,10**7)
    for i in all:
        if check(i):
            if check(i**2):
                i**2
if __name__ == '__main__':
    start=time.time()
    test()
    print time.time()-start
Nach dem Login kopieren


Die Ergebnisse der Ausführung von Python bzw. Pypy

C:Python27python.exeD:/RCC/mp/src/test.py
14.4940001965

C:pypy-2.1pypy.exeD:/RCC/mp/src/test.py
4.37800002098

Es ist ersichtlich, dass die Auswirkung der laufenden Ergebnisse von Pypy ist immer noch offensichtlich. Obwohl es um das Fünffache erhöht werden kann (auf einem Linux-Computer), 50 * 5, ist es immer noch weit von 2000 entfernt. Pypy hat keinen offensichtlichen Einfluss auf die Python-Multithreading-Unterstützung, was später erwähnt wird.

Beenden wir es jetzt. Der Codeoptimierungsteil wird im nächsten Artikel vorgestellt.

[Empfohlener Kurs: Python-Video-Tutorial]

Das obige ist der detaillierte Inhalt vonVerwendung von Python zur Implementierung leistungsstarker Testtools (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage