โครงการ Trio มีเป้าหมายเพื่อสร้างไลบรารี I/O ที่มีคุณภาพการผลิต ได้รับใบอนุญาตแบบ async/await-native สำหรับ Python เช่นเดียวกับไลบรารีอะซิงก์ทั้งหมด จุดประสงค์หลักคือเพื่อช่วยให้คุณเขียนโปรแกรมที่ทำ หลายสิ่งในเวลาเดียวกัน ด้วย I/O แบบขนาน เว็บสไปเดอร์ที่ต้องการดึงเพจจำนวนมากพร้อมกัน เว็บเซิร์ฟเวอร์ที่ต้องจัดการการดาวน์โหลดจำนวนมากและการเชื่อมต่อเว็บซ็อกเก็ตพร้อมกัน ผู้ดูแลกระบวนการตรวจสอบกระบวนการย่อยหลายรายการ... อะไรแบบนั้น เมื่อเปรียบเทียบกับห้องสมุดอื่นๆ Trio พยายามสร้างความแตกต่างโดยให้ความสำคัญกับ การใช้งาน และ ความถูกต้อง มากเกินไป การเห็นพ้องต้องกันมีความซับซ้อน เราพยายามทำให้สิ่งต่าง ๆ ถูกต้อง เป็น เรื่องง่าย
Trio ถูกสร้างขึ้นใหม่หมดเพื่อใช้ประโยชน์จากฟีเจอร์ล่าสุดของ Python และได้รับแรงบันดาลใจจากหลายแหล่ง โดยเฉพาะ Curio ของ Dave Beazley การออกแบบที่ได้นั้นดูเรียบง่ายกว่าคู่แข่งรุ่นเก่าอย่าง Asyncio และ Twisted อย่างมาก แต่ก็มีความสามารถพอๆ กัน Trio เป็นไลบรารี Python I/O ที่ฉันต้องการมาตลอด ฉันพบว่ามันทำให้การสร้างโปรแกรม I/O ง่ายขึ้น ผิดพลาดน้อยลง และสนุกมากขึ้น บางทีคุณอาจจะพบสิ่งเดียวกัน
โปรเจ็กต์นี้ยังใหม่และยังค่อนข้างอยู่ในขั้นทดลอง: การออกแบบโดยรวมมีความแข็งแกร่ง และฟีเจอร์ที่มีอยู่ได้รับการทดสอบและจัดทำเป็นเอกสารไว้อย่างสมบูรณ์ แต่คุณอาจพบกับฟังก์ชันการทำงานที่ขาดหายไปหรือขอบที่หยาบกร้าน เรา ขอ แนะนำให้คุณใช้งาน แต่คุณควรอ่านและสมัครรับฉบับที่ 1 เพื่อรับคำเตือนและให้โอกาสแสดงความคิดเห็นเกี่ยวกับการเปลี่ยนแปลงที่ทำลายความเข้ากันได้
ฉันอยากลองดู! สุดยอด! เรามีบทช่วยสอนที่เป็นมิตรเพื่อให้คุณเริ่มต้นได้ ไม่จำเป็นต้องมีประสบการณ์เกี่ยวกับการเข้ารหัสแบบอะซิงก์มาก่อน
ฉันไม่ต้องการที่จะอ่านทั้งหมด – แสดงรหัสให้ฉันหน่อย! หากคุณไม่อดทน นี่คือตัวอย่างการทำงานพร้อมกันง่ายๆ ไคลเอนต์ Echo และเซิร์ฟเวอร์ Echo
Trio ทำให้โปรแกรมอ่านและให้เหตุผลง่ายกว่าแนวทางการแข่งขันอย่างไร Trio มีพื้นฐานมาจากวิธีคิดใหม่ที่เราเรียกว่า "การทำงานพร้อมกันอย่างมีโครงสร้าง" การแนะนำทางทฤษฎีที่ดีที่สุดคือบทความ หมายเหตุเกี่ยวกับการทำงานพร้อมกันที่มีโครงสร้าง หรือ: คำสั่ง Go ถือว่าเป็นอันตราย หรือดูการพูดคุยนี้ที่ PyCon 2018 เพื่อดูการสาธิตการใช้อัลกอริทึม "Happy Eyeballs" ในไลบรารีรุ่นเก่าเทียบกับ Trio
เยี่ยมมาก แต่มันจะทำงานกับระบบของฉันได้ไหม? อาจจะ! ตราบใดที่คุณมี Python 3.9 หรือดีกว่า (CPython หรือ PyPy3 เวอร์ชันที่ได้รับการดูแลในปัจจุบันนั้นใช้ได้ทั้งคู่) และกำลังใช้ Linux, macOS, Windows หรือ FreeBSD Trio ก็จะใช้งานได้ สภาพแวดล้อมอื่นๆ อาจใช้งานได้เช่นกัน แต่สภาพแวดล้อมเหล่านั้นคือสภาพแวดล้อมที่เราทดสอบ และการขึ้นต่อกันทั้งหมดของเรานั้นเป็น Python ล้วนๆ ยกเว้น CFFI บน Windows ซึ่งมีล้อให้เลือกใช้ ดังนั้นการติดตั้งจึงควรเป็นเรื่องง่าย (ไม่จำเป็นต้องใช้คอมไพเลอร์ C)
ฉันลองแล้ว แต่มันใช้งานไม่ได้ ขออภัยที่ได้ยินเช่นนั้น! คุณสามารถลองขอความช่วยเหลือได้ในห้องสนทนาหรือฟอรัมของเรา แจ้งข้อบกพร่อง หรือโพสต์คำถามบน StackOverflow แล้วเราจะพยายามอย่างเต็มที่เพื่อช่วยเหลือคุณ
Trio เจ๋งมาก และฉันอยากช่วยให้มันเจ๋งกว่านี้อีก! คุณเก่งที่สุด! มีงานที่ต้องทำมากมาย – เติมเต็มฟังก์ชันที่ขาดหายไป สร้างระบบนิเวศของไลบรารีที่ใช้ Trio การทดสอบการใช้งาน (เช่น อาจลองสอนตัวเองหรือเพื่อนให้ใช้ Trio และจัดทำรายการข้อความแสดงข้อผิดพลาดทุกข้อความที่คุณพบและตำแหน่งที่ คุณสับสนใช่ไหม), ปรับปรุงเอกสาร, ... ดูคำแนะนำสำหรับผู้มีส่วนร่วมของเรา!
ฉันไม่มีแผนที่จะใช้มันในทันที แต่ฉันชอบที่จะศึกษาเกี่ยวกับการออกแบบไลบรารี I/O! มันแปลกนิดหน่อยเหรอ? แต่บอกตามตรงว่าคุณจะเข้ากันได้ดีแถวนี้ เรามีฟอรัมย่อยทั้งหมดสำหรับหารือเกี่ยวกับการทำงานพร้อมกันที่มีโครงสร้าง (ยินดีต้อนรับนักพัฒนาระบบอื่น!) หรือตรวจสอบการอภิปรายเกี่ยวกับตัวเลือกการออกแบบ รายการเรื่องรออ่าน และประเด็นที่ติดแท็กการอภิปรายการออกแบบ
ฉันต้องการให้แน่ใจว่าทนายของบริษัทจะไม่โกรธฉัน! ไม่ต้องกังวล Trio ได้รับการอนุญาตภายใต้ MIT หรือ Apache 2 ที่คุณเลือก ดูใบอนุญาตสำหรับรายละเอียด
ผู้ร่วมให้ข้อมูลจะต้องปฏิบัติตามจรรยาบรรณของเราในทุกพื้นที่ของโครงการ