python - 日志记录或打印方法可以切换 greenlet 吗?

标签 python gevent greenlets

我对 greenlet 和 gevent 还很陌生,但据我了解,greenlet 在显式的yield 语句或阻塞 I/O 操作上屈服于其他 greenlet。但是使用 print 语句写入 stdout 会阻塞吗?那么使用日志记录模块写入 stdout、stderr 或本地磁盘或 NFS 上的文件怎么样?

对打印语句或日志记录方法的调用会导致 greenlet 切换吗?

最佳答案

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

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

关于python - 日志记录或打印方法可以切换 greenlet 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619560/

相关文章:

java - 如何获取首页URL链接

python - 将图像转换为 one-hot 数组并返回黑色图像

python - redis + gevent - 性能不佳 - 我做错了什么?

python - 将多处理队列/字典/等传递给绿色线程

python - 我可以在记录时设置为 gevent greenlet 显示的自定义名称吗?

python - Gevent greenlet 向父级冒泡异常

python - FSharp 运行我的算法比 Python 慢

python - 如何将秒转换为 hh :mm:ss in django template

asynchronous - 如何在 Flask/gunicorn/gevent 中启动一个异步函数?

python - 在同步和异步情况下使用 time.clock() 进行错误的速度测试?