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 獲得許可。
貢獻者必須在所有專案空間中遵守我們的行為準則。