.. image:: https://img.shields.io/badge/chat-join%20now-blue.svg :target: https://gitter.im/python-trio/general :alt: 加入聊天室
.. image:: https://img.shields.io/badge/forum-join%20now-blue.svg :target: https://trio.discourse.group :alt: 加入论坛
.. image:: https://img.shields.io/badge/docs-read%20now-blue.svg :target: https://trio.readthedocs.io :alt: 文档
.. image:: https://img.shields.io/pypi/v/trio.svg :target: https://pypi.org/project/trio :alt: 最新PyPi版本
.. image:: https://img.shields.io/conda/vn/conda-forge/trio.svg :target: https://anaconda.org/conda-forge/trio :alt: 最新conda-forge版本
.. image:: https://codecov.io/gh/python-trio/trio/branch/main/graph/badge.svg :target: https://codecov.io/gh/python-trio/trio :alt: 测试覆盖率
Trio – 一个友好的Python异步并发和I/O库
.. image:: https://raw.githubusercontent.com/python-trio/trio/9b0bec646a31e0d0f67b8b6ecc6939726faf3e17/logo/logo-with-background.svg :width: 200px :align: right
Trio项目旨在开发一个生产级别的、采用宽松许可证的、支持async/await原生语法的Python I/O库。和所有异步库一样,它的主要目的是帮助你编写能够同时做多件事并实现并行I/O的程序。比如需要同时获取大量网页的网络爬虫,需要同时处理大量下载和WebSocket连接的Web服务器,监控多个子进程的进程监视器等。与其他库相比,Trio致力于以极致的专注度提升易用性和正确性。并发是复杂的,我们努力让它变得容易,让你能正确地完成工作。
Trio从零开始构建,充分利用了最新的Python特性,并从多个来源汲取灵感,特别是Dave Beazley的Curio。最终的设计比asyncio和Twisted等老牌竞争对手简单得多,但功能同样强大。Trio是我一直想要的Python I/O库;我发现它使构建面向I/O的程序变得更容易、更不容易出错,而且更有趣。也许你也会有同感。
这个项目还比较年轻,仍然有些实验性:总体设计是稳固的,现有功能也经过全面测试和文档化,但你可能会遇到一些缺失的功能或不完善之处。我们确实鼓励你使用它,但你应该阅读并订阅issue #1,以获得关于任何破坏兼容性的更改的警告,并有机会提供反馈。
接下来怎么办?
**我想试试看!**太棒了!我们有一个友好的教程可以帮助你入门;不需要有任何异步编程的经验。
**唉,我不想看那么多 - 直接给我看代码!**如果你着急的话,这里有一个简单的并发示例,一个回声客户端,和一个回声服务器。
**Trio如何使程序比其他方法更容易阅读和理解?**Trio基于一种我们称之为"结构化并发"的新思维方式。最好的理论介绍是这篇文章:结构化并发笔记,或:为什么Go语句有害。或者,看看这个PyCon 2018的演讲,展示了在旧库和Trio中实现"Happy Eyeballs"算法的对比。
**很酷,但它能在我的系统上运行吗?**很可能可以!只要你有Python 3.8或更高版本(CPython或目前维护的PyPy3版本都可以),并且使用Linux、macOS、Windows或FreeBSD,Trio就能工作。其他环境可能也可以,但这些是我们测试过的。而且我们所有的依赖项都是纯Python的,除了Windows上的CFFI(有预编译的wheel可用),所以安装应该很容易(不需要C编译器)。
**我试了,但它不工作。**很抱歉听到这个!你可以尝试在我们的聊天室或论坛寻求帮助,提交一个bug,或者在StackOverflow上提问,我们会尽力帮助你。
**Trio太棒了,我想帮助它变得更棒!**你真是太好了!有很多工作要做 - 填补缺失的功能,建立使用Trio的库生态系统,进行可用性测试(例如,也许试着教自己或朋友使用Trio,并列出你遇到的每个错误消息和感到困惑的地方?),改进文档等。查看我们的贡献者指南!
**我没有立即使用它的计划,但我喜欢研究I/O库设计!**这有点奇怪?但说实话,你会很适合这里。我们有一个专门讨论结构化并发的子论坛(欢迎其他系统的开发者!)。或者看看我们的设计选择讨论,阅读列表,和标记为设计讨论的issues。
**我想确保我公司的律师不会生我的气!**别担心,Trio采用宽松的许可证,你可以选择MIT或Apache 2。详情请见LICENSE。
行为准则
我们要求贡献者在所有项目空间中遵守我们的行为准则。