Skip to main content
 首页 » 编程设计

python之日志记录或打印方法可以切换 greenlets 吗

2025年05月04日10sxdcgaq8080

我对 greenlets 和 gevent 还是个新手,但据我了解,greenlets 会在显式 yield 语句或阻塞 I/O 操作时屈服于其他 greenlets。但是使用 print 语句阻塞写入 stdout 吗?以及如何使用日志记录模块写入 stdout、stderr 或本地磁盘或 NFS 上的文件?

调用 print 语句或日志记录方法是否会导致 greenlet 切换?

请您参考如下方法:

print语句总是阻塞的,不会切换到其他greenlets。避免在任何 Gevent 服务器代码中打印指令。

较新的 Gevent 版本具有异步文件 I/O gevent.os.tp_read可以与日志模块一起使用以实现非阻塞操作。在这种情况下,日志语句将导致 Greenlet 上下文切换。