Pourquoi l'implémentation Python d'ISUCON 5 a utilisé Bottle

https://github.com/bottlepy/bottle

Compte tenu des points de vue suivants, j'ai choisi Bottle, ce que j'ai trouvé globalement bon.

Compatible avec Python 3

Je voulais utiliser Python 3 pour cet ISUCON.

Cela fait de nombreuses années que 3 est sorti, et 2/3 des principales bibliothèques sont supportées.

En Python, l'apparence et le style d'écriture n'ont pas changé de manière significative, même s'ils passaient de 2 à 3, et il y avait un point que même les utilisateurs de 2 séries qui n'avaient jamais utilisé 3 séries pouvaient lire et écrire sans problème.

Les frameworks bien connus étaient compatibles avec Python 3, ils semblaient donc tous fonctionner.

La dépendance est uniquement une bibliothèque standard

Avec ISUCON, il est nécessaire de résoudre les problèmes en peu de temps, et je veux que les questionneurs se concentrent là-dessus, de sorte que le coût d'apprentissage du cadre doit être faible.

Bottle ne dépend que des bibliothèques standard. S'il s'agit d'une bibliothèque standard, vous pouvez vous attendre à la connaître, et vous pouvez également trouver des documents et des informations.

Si vous comptez sur d'autres bibliothèques tierces, il faudra plus de temps pour explorer l'utilisation et les options du framework.

Cadre non choisi

CherryPy

http://cherrypy.org/

--Il y a une histoire et une reconnaissance de nom --Il ne semble y avoir aucune dépendance vis-à-vis de tiers

Il n'avait pas de moteur de modèle, et il avait un plus grand nombre et une plus grande taille de fichiers que Bottle.

Flask

http://flask.pocoo.org/

Il a été utilisé dans l'implémentation Python dans ISUCON 4.

Il a également des fonctions pour les applications à grande échelle telles que Blueprints, et l'échelle du cadre est grande.

Tornado

https://github.com/tornadoweb/tornado

―― Votre nom est-il si bon? --Il y a un peu de dépendance vis-à-vis des tiers

Personnellement mon cadre préféré.

Puisqu'il prend en charge les E / S asynchrones, il peut convenir à des applications telles que ISUCON où un grand nombre de points de repère sont accessibles. Cependant, je ne l'ai pas adopté car j'avais l'habitude de traiter efficacement les E / S asynchrones avec un seul thread, donc j'ai pensé que ce serait mal si les participants étaient confus.

Il vaut peut-être mieux le remplacer par Tornado lors du dernier problème en Python.

Falcon

http://falconframework.org/

La vitesse semble être un argument de vente.

L'échelle était grande.

Django

https://www.djangoproject.com/

Je pensais que c'était trop lourd.

Pyramid

http://www.pylonsproject.org/

Je pensais que cela ne correspondrait pas à ISUCON.

Recommended Posts

Pourquoi l'implémentation Python d'ISUCON 5 a utilisé Bottle
le zen de Python
[Python] Lire le code source de Bottle Part 1
Implémentation python de la classe de régression linéaire bayésienne
Pourquoi le premier argument de la classe [Python] est-il self?
Un mémorandum sur la mise en œuvre des recommandations en Python
Vers la retraite de Python2
Implémentation Python du filtre à particules
Implémentation du tri rapide en Python
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
Une implémentation Python simple de la méthode k-voisinage (k-NN)
Sakura L'histoire du fonctionnement de la bouteille Python sur Internet
Commandes souvent utilisées dans l'environnement de développement lors de l'implémentation de Python
L'histoire de Python et l'histoire de NaN
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
Implémentation Python du filtre à particules auto-organisateur
Existence du point de vue de Python
pyenv-changer la version python de virtualenv
Implémentation du jeu de vie en Python
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
Implémentation des notifications de bureau à l'aide de Python
Implémentation Python de l'arborescence de segments non récursive
Implémentation de Light CNN (Python Keras)
Implémentation du tri original en Python
Implémentation de la méthode Dyxtra par python
À propos de la liste de base des bases de Python
Apprenez les bases de Python ① Débutants élémentaires
[Python] J'ai expliqué en détail la théorie et la mise en œuvre de la régression logistique
[Python] J'ai expliqué en détail la théorie et la mise en œuvre de l'arbre de décision
J'ai essayé de résumer la méthode de mise en œuvre fréquemment utilisée de pytest-mock
Changer la longueur des chaînes csv Python
Vérifiez le comportement du destroyer en Python
[Python3] Comprendre les bases de Beautiful Soup
Othello-De la troisième ligne de "Implementation Deep Learning" (3)
Notes d'apprentissage depuis le début de Python 1
Vérifier l'existence du fichier avec python
À propos de l'environnement virtuel de Python version 3.7
[Python3] Réécrire l'objet code de la fonction
Je ne connaissais pas les bases de Python
Le résultat de l'installation de python sur Anaconda
[Python] Essayez pydash de la version Python de lodash
[python] Vérifier la consommation de mémoire des variables
Vérifiez le chemin du module importé Python
L'histoire de la manipulation des variables globales Python
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
[python] [meta] Le type de python est-il un type?
Principes de base pour exécuter NoxPlayer en Python
[Principes de base de Python] Pourquoi __name__ == "__main__"
Pandas du débutant, par le débutant, pour le débutant [Python]
Pourquoi l'entropie croisée est-elle utilisée pour la fonction objective du problème de classification?
Le modèle de projet Python auquel je pense.
À la recherche du FizzBuzz le plus rapide en Python
Cours de base Python (à la fin de 15)