Trio 项目旨在为 Python 生成一个生产质量、许可许可的异步/等待本机 I/O 库。与所有异步库一样,它的主要目的是帮助您编写使用并行 I/O同时执行多项操作的程序。一个想要并行获取大量页面的网络蜘蛛,一个需要同时处理大量下载和 websocket 连接的网络服务器,一个监控多个子进程的进程管理器......诸如此类的事情。与其他库相比,Trio 试图通过对可用性和正确性的痴迷来区分自己。并发比较复杂;我们努力让事情变得容易做对。
Trio 是从头开始构建的,旨在利用最新的 Python 功能,并从许多来源中汲取灵感,特别是 Dave Beazley 的 Curio。由此产生的设计比 asyncio 和 Twisted 等老竞争对手简单得多,但功能同样强大。 Trio是我一直想要的Python I/O库;我发现它使得构建面向 I/O 的程序变得更容易、更不容易出错,而且更有趣。也许你会发现同样的情况。
这个项目还很年轻,仍然有些实验性:整体设计很扎实,现有功能经过充分测试和记录,但您可能会遇到功能缺失或边缘粗糙的情况。我们确实鼓励您使用它,但您应该阅读并订阅第 1 期,以获得警告并有机会对任何破坏兼容性的更改提供反馈。
我想尝试一下!惊人的!我们有一个友好的教程来帮助您入门;无需具备异步编码经验。
呃,我不想读所有这些——给我看一些代码!如果您不耐烦,那么这里有一个简单的并发示例,一个 echo 客户端和一个 echo 服务器。
Trio 如何使程序比竞争方法更易于阅读和推理? Trio 基于一种新的思维方式,我们称之为“结构化并发”。最好的理论介绍是《结构化并发注释》一文,或者说:Go语句被认为是有害的。或者,查看 PyCon 2018 上的演讲,了解在较旧的库与 Trio 中实现“Happy Eyeballs”算法的演示。
很酷,但是它可以在我的系统上运行吗?大概!只要您有某种 Python 3.9 或更好的版本(CPython 或当前维护的 PyPy3 版本都可以),并且使用 Linux、macOS、Windows 或 FreeBSD,那么 Trio 就可以工作。其他环境也可能有效,但这些是我们测试的环境。我们所有的依赖项都是纯Python,除了Windows上的CFFI,它有可用的轮子,所以安装应该很容易(不需要C编译器)。
我尝试过,但它不起作用。很遗憾听到这个消息!您可以尝试在我们的聊天室或论坛中寻求帮助、提交错误或在 StackOverflow 上发布问题,我们将尽力帮助您。
Trio 太棒了,我想帮助它变得更棒!你是最棒的!有大量的工作要做——填补缺失的功能、建立一个使用 Trio 的库的生态系统、可用性测试(例如,也许尝试教自己或朋友使用 Trio,并列出您遇到的每条错误消息并在其中放置错误消息)。您感到困惑了吗?),改进文档,...查看我们的贡献者指南!
我没有任何立即使用它的计划,但我喜欢研究 I/O 库设计!这有点奇怪吗?但说实话,你会很适应这里的。我们有一个完整的子论坛来讨论结构化并发(欢迎其他系统的开发人员!)。或者查看我们对设计选择、阅读列表和标记为设计讨论的问题的讨论。
我要确保我公司的律师不会生我的气!不用担心,Trio 已根据您选择的 MIT 或 Apache 2 获得许可。有关详细信息,请参阅许可证。
贡献者必须在所有项目空间中遵守我们的行为准则。