Warum die Python-Implementierung von ISUCON 5 Bottle verwendet

https://github.com/bottlepy/bottle

Unter folgenden Gesichtspunkten habe ich mich für Bottle entschieden, was ich insgesamt für gut hielt.

Kompatibel mit Python 3

Ich wollte Python 3 für diese ISUCON verwenden.

Es ist viele Jahre her, dass 3 herausgekommen sind und 2/3 der großen Bibliotheken werden unterstützt.

In Python änderten sich das Erscheinungsbild und der Schreibstil nicht wesentlich, selbst wenn sie sich von 2 auf 3 änderten, und es gab einen Punkt, an dem selbst Benutzer von 2 Serien, die noch nie 3 Serien verwendet hatten, problemlos lesen und schreiben konnten.

Bekannte Frameworks unterstützten Python3, so dass es den Anschein hatte, als könnten sie alle verwendet werden.

Die Abhängigkeit ist nur die Standardbibliothek

Mit ISUCON ist es notwendig, Probleme in kurzer Zeit zu lösen, und wir möchten, dass sich die Fragesteller darauf konzentrieren, sodass die Lernkosten des Frameworks niedrig sein müssen.

Flasche hängt nur von Standardbibliotheken ab. Wenn es sich um eine Standardbibliothek handelt, können Sie davon ausgehen, dass Sie damit vertraut sind, und Sie können auch Dokumente und Informationen finden.

Wenn Sie sich auf andere Bibliotheken von Drittanbietern verlassen, dauert es länger, die Verwendung und Optionen des Frameworks zu untersuchen.

Framework nicht gewählt

CherryPy

http://cherrypy.org/

Es hatte keine Template-Engine und eine größere Anzahl und Größe von Dateien als Bottle.

Flask

http://flask.pocoo.org/

Es wurde in der Python-Implementierung in ISUCON 4 verwendet.

Es hat auch Funktionen für große Apps wie Blueprints, und der Umfang des Frameworks ist groß.

Tornado

https://github.com/tornadoweb/tornado

――Ist dein Name so gut?

Persönlich mein Lieblingsrahmen.

Da es asynchrone E / A unterstützt, eignet es sich möglicherweise für Anwendungen wie ISUCON, bei denen auf eine große Anzahl von Benchmarkern zugegriffen wird. Ich habe es jedoch nicht übernommen, weil ich die Angewohnheit hatte, asynchrone E / A effizient mit einem einzelnen Thread zu verarbeiten. Daher dachte ich, es wäre schlecht, wenn die Teilnehmer verwirrt wären.

Vielleicht ist es besser, es durch Tornado zu ersetzen, wenn Sie das letzte Problem in Python lösen.

Falcon

http://falconframework.org/

Die Geschwindigkeit scheint ein Verkaufsargument zu sein.

Der Maßstab war groß.

Django

https://www.djangoproject.com/

Ich fand es zu schwer.

Pyramid

http://www.pylonsproject.org/

Ich dachte, es würde irgendwie nicht zu ISUCON passen.

Recommended Posts

Warum die Python-Implementierung von ISUCON 5 Bottle verwendet
der Zen von Python
[Python] Lesen Sie den Quellcode von Flasche Teil 1
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Warum ist das erste Argument der [Python] -Klasse selbst?
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Auf dem Weg zum Ruhestand von Python2
Python-Implementierung des Partikelfilters
Implementierung der schnellen Sortierung in Python
Über die Funktionen von Python
Die Kraft der Pandas: Python
Eine einfache Python-Implementierung der k-Neighborhood-Methode (k-NN)
Sakura Die Geschichte, wie die Python-Flasche im Internet funktioniert hat
Befehle, die häufig in der Entwicklungsumgebung während der Python-Implementierung verwendet werden
Die Geschichte von Python und die Geschichte von NaN
[Python] Der Stolperstein des Imports
Erster Python 3 ~ Der Beginn der Wiederholung ~
Python-Implementierung eines selbstorganisierenden Partikelfilters
Existenz aus Sicht von Python
pyenv-change die Python-Version von virtualenv
Implementierung eines Lebensspiels in Python
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Überprüfung der Grundlagen von Python (FizzBuzz)
Implementierung von Desktop-Benachrichtigungen mit Python
Python-Implementierung eines nicht rekursiven Segmentbaums
Implementierung von Light CNN (Python Keras)
Implementierung der ursprünglichen Sortierung in Python
Implementierung der Dyxtra-Methode durch Python
Informationen zur Grundlagenliste der Python-Grundlagen
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
[Python] Ich habe die Theorie und Implementierung der logistischen Regression gründlich erklärt
[Python] Ich habe die Theorie und Implementierung des Entscheidungsbaums gründlich erklärt
Ich habe versucht, die häufig verwendete Implementierungsmethode von pytest-mock zusammenzufassen
Ändern Sie die Länge der Python-CSV-Zeichenfolgen
Überprüfen Sie das Verhalten des Zerstörers in Python
[Python3] Verstehe die Grundlagen von Beautiful Soup
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (3)
Notizen vom Anfang von Python 1 lernen
Überprüfen Sie die Existenz der Datei mit Python
Informationen zur virtuellen Umgebung von Python Version 3.7
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
Ich kannte die Grundlagen von Python nicht
Das Ergebnis der Installation von Python auf Anaconda
[Python] Probieren Sie pydash der Python-Version von lodash aus
[Python] Überprüfen Sie den Speicherverbrauch von Variablen
Überprüfen Sie den Pfad des importierten Python-Moduls
Die Geschichte der Manipulation globaler Python-Variablen
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
[Python] [Meta] Ist der Python-Typ ein Typ?
Grundlagen zum Ausführen von NoxPlayer in Python
[Grundlagen der Python-Grundlagen] Warum __name__ == "__main__"
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Warum wird Kreuzentropie für die Zielfunktion des Klassifizierungsproblems verwendet?
Die Python-Projektvorlage, an die ich denke.
Auf der Suche nach dem schnellsten FizzBuzz in Python
Python-Grundkurs (Ende 15)