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