我仍然是greenlets和gevent的新手,但据我所知,greenlet在显式yield语句或阻塞I / O操作上会产生其他greenlet。但是使用print语句阻塞写入stdout吗?那么使用日志记录模块写入stdout,stderr或本地磁盘上的文件或NFS呢?
对print语句或日志记录方法的调用是否会导致greenlet切换?
答案 0 :(得分:1)
print语句始终处于阻塞状态,不会切换到其他greenlet。避免在任何Gevent服务器代码中使用打印指令。
较新的Gevent版本具有异步文件I / O gevent.os.tp_read,可以与日志记录模块一起使用以实现非阻塞操作。在这种情况下,日志语句将导致Greenlet上下文切换。