Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
fw:gevent [2013/07/04 18:36] alfred [Switching] |
fw:gevent [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 62: | Línea 62: | ||
| ===== gevent ===== | ===== gevent ===== | ||
| * Para instalarlo has de tener instalado en el operativo la librería ''libevent-dev'' | * Para instalarlo has de tener instalado en el operativo la librería ''libevent-dev'' | ||
| + | * [[http://www.gevent.org/contents.html|Documentación]] | ||
| Es una librería basada en concurrencia por greenlets para desarrollar aplicaciones asíncronas, puede ser aprovechado es las funciones de network. \\ | Es una librería basada en concurrencia por greenlets para desarrollar aplicaciones asíncronas, puede ser aprovechado es las funciones de network. \\ | ||
| Línea 82: | Línea 83: | ||
| ... Se ejecuta de la siguiente forma: \\ | ... Se ejecuta de la siguiente forma: \\ | ||
| {{:fw:others:flow.gif?direct&200|}} | {{:fw:others:flow.gif?direct&200|}} | ||
| - | ===== Méotodos ===== | + | ==== Méotodos ==== |
| * ''gevent.spawn()'' | * ''gevent.spawn()'' | ||
| * ''gevent.joinall([gevents])'', detiene la ejecución del programa hasta que los greenlets no han acabado. | * ''gevent.joinall([gevents])'', detiene la ejecución del programa hasta que los greenlets no han acabado. | ||
| + | |||
| + | ==== Monkey patching ==== | ||
| + | Es una técnica que consiste en substituir llamadas a elementos del sistema que son bloqueantes por otras que no lo son y, de esa forma, adaptar código antiguo al nuevo. \\ | ||
| + | Por ejemplo existe una substitución a ''sleep''. La de la librería básica bloquea el event loop mientras que ''gevent.spleep'' no . \\ | ||
| + | Módulos que han sido substituidos: //socket//, //ssl//, //os//, //time//, //select//, //thread // y //threading//. | ||
| + | |||
| + | |||
| + | |||
| ===== Ejemplos ===== | ===== Ejemplos ===== | ||
| === Métodos síncronos y asíncronos === | === Métodos síncronos y asíncronos === | ||
| Línea 170: | Línea 179: | ||
| print 'Asynchronous:' | print 'Asynchronous:' | ||
| asynchronous() | asynchronous() | ||
| + | </code> | ||
| + | ===== Notas ===== | ||
| + | ==== ZeroMQ ==== | ||
| + | Para hacer el paquete ''pyzmq'' compatible con los greenlets instalaremos el paquete ''gevent-zeromq''. A partir de entonces instanciaremos zeromq de la siguiente forma: | ||
| + | <code python> | ||
| + | from gevent_zeromq import zmq | ||
| </code> | </code> | ||