Mein Programm ist ICAPServer (ähnlich mit httpserver), es ist Hauptaufgabe, Daten von Clients zu empfangen und die Daten in DB zu speichern.Python Programmwahl
Es gibt zwei Hauptschritte und zwei Themen:
- ICAPServer Daten von Clients empfängt, setzt die Daten in einer Warteschlange (50kb < 1ms);
- ein anderer Thread löscht Daten aus der Warteschlange und schreibt sie in DB SO. Wenn der zweite Schritt zu langsam ist, füllt die Warteschlange den Speicher mit diesen Daten.
fragen sich, ob jemand irgendwelche Vorschläge haben ...
Vielen Dank für die Tipps, Roberto! Ich weiß nicht, ob ich Profil auf dem Reaktor von twisted verwenden kann, denn es ist eine kreisförmige Funktion. Was ich getan habe, ist Zeitstempel an jedem Punkt zu machen, den Zeitunterschied von ihnen zu testen. Und der Zeitunterschied von jedem commit() ist etwa 30 ms (2. Schritt), während der erste Schritt <1 ms ist. Ich denke, das bedeutet etwas für die Leistung - 2. Schritt ist zu langsam. – Ryan
Ich habe die Antwort aktualisiert; Im Grunde würde ich Ihnen auch vorschlagen, mehr Threads zu verwenden, weil sie billig zu implementieren sind, und wenn der Engpass im Netzwerk ist, dann wird die GIL während des Wartens freigegeben, so dass Sie eine gute Leistungsverbesserung erzielen können. –
Tks Roberto, ich testen Sie Ihren Vorschlag - weitere Threads hinzufügen, verwendet jeder Thread seine eigene Sitzung, DB zu schreiben, scheint die Leistung erhöht. Ich weiß, wir können DB parallel betreiben, hat Multi-Threading parallel implementiert? Oder sollte ich etwas auf sqlalchmey tun, um einen parallelen DB-Betrieb zu implementieren? – Ryan