Selon eventlet document:python eventlet - fichier async (non bloquant) io
It uses epoll or libevent for highly scalable non-blocking I/O.
Je sais non bloquante ici E/S couvre le cas lorsque vous interagissez avec prises. Une fois que le socket est vert/corrigé par un événement, la connexion du socket devient non bloquante.
Mes questions sont: Est-ce que cette E/S non bloquante couvre également les E/S de fichiers?
C'est ce que j'ai découvert aussi, comme la connexion socket, eventlet peut le rendre vert/async pas de problèmes. Mais les fichiers d'E/S, à moins de l'utiliser dans tpool, Greenpool n'a tout simplement aucun moyen de le rendre asynchrone. Donc, cela n'a pas de sens de faire des E/S de fichiers dans le fil vert, correct? Parce qu'il peut facilement bloquer tout le reste dans le même processus. – Shengjie
Oui et non. Chaque opération de fichier 'open' ou autre bloque vraiment tous les threads verts. Mais le temps de blocage est généralement assez faible. D'un autre côté, si vous déployez sur un hébergement massivement partagé, comme Amazon EC2 avec une possible disfonctionnement des E/S du disque, oui, il peut bloquer pendant longtemps et ensuite "tpool" serait très utile. Mesurer tout est la clé du succès. – temoto