يهدف مشروع Trio إلى إنتاج مكتبة إدخال/إخراج غير متزامنة/منتظرة أصلية لـ Python ذات جودة إنتاجية ومرخصة بشكل مسموح. مثل جميع المكتبات غير المتزامنة، فإن الغرض الرئيسي منها هو مساعدتك في كتابة البرامج التي تقوم بأشياء متعددة في نفس الوقت باستخدام الإدخال/الإخراج المتوازي . عنكبوت الويب الذي يريد جلب الكثير من الصفحات بالتوازي، خادم الويب الذي يحتاج إلى التوفيق بين الكثير من التنزيلات واتصالات websocket في وقت واحد، مشرف العمليات الذي يراقب العمليات الفرعية المتعددة... هذا النوع من الأشياء. بالمقارنة مع المكتبات الأخرى، تحاول Trio تمييز نفسها من خلال التركيز المهووس على سهولة الاستخدام والصحة . التزامن معقد. نحن نحاول أن نجعل من السهل تصحيح الأمور.
تم إنشاء Trio من الألف إلى الياء للاستفادة من أحدث ميزات Python، وهو مستوحى من العديد من المصادر، ولا سيما Curio الخاص بـ Dave Beazley. التصميم الناتج أبسط بشكل جذري من المنافسين الأقدم مثل asyncio وTwisted، ولكنه يتمتع بنفس القدر من الكفاءة. Trio هي مكتبة Python I/O التي طالما أردتها؛ أجد أنه يجعل بناء البرامج الموجهة للإدخال/الإخراج أسهل، وأقل عرضة للخطأ، وأكثر متعة. ربما ستجد نفس الشيء.
هذا المشروع حديث العهد ولا يزال تجريبيًا إلى حد ما: التصميم العام متين، والميزات الحالية تم اختبارها وتوثيقها بالكامل، ولكن قد تواجه وظائف مفقودة أو حواف خشنة. نحن نشجعك على استخدامه، ولكن يجب عليك قراءة الإصدار رقم 1 والاشتراك فيه للحصول على تحذير وفرصة لتقديم تعليقات حول أي تغييرات تنتهك التوافق.
أريد تجربتها! مذهل! لدينا برنامج تعليمي ودود لتبدأ به؛ ليست هناك حاجة إلى خبرة سابقة في الترميز غير المتزامن.
آه، لا أريد قراءة كل ذلك – أرني بعض التعليمات البرمجية! إذا كنت غير صبور، فإليك مثال بسيط للتزامن، وعميل صدى، وخادم صدى.
كيف يجعل Trio البرامج أسهل في القراءة والتفكير من الأساليب المنافسة؟ يعتمد Trio على طريقة جديدة في التفكير نسميها "التزامن المنظم". أفضل مقدمة نظرية هي مقالة "ملاحظات حول التزامن المنظم"، أو: تعتبر عبارة Go ضارة. أو قم بمراجعة هذه المحادثة في PyCon 2018 لمشاهدة عرض توضيحي لتطبيق خوارزمية "Happy Eyeballs" في مكتبة قديمة مقابل Trio.
رائع، ولكن هل سيعمل على نظامي؟ من المحتمل! طالما أن لديك نوعًا من Python 3.9 أو أفضل (CPython أو الإصدارات الحالية من PyPy3 كلاهما جيد)، وتستخدم Linux أو macOS أو Windows أو FreeBSD، فسيعمل Trio. قد تعمل البيئات الأخرى أيضًا، ولكن تلك هي تلك التي نختبرها. وجميع تبعياتنا هي لغة بايثون خالصة، باستثناء CFFI على نظام التشغيل Windows، الذي يحتوي على عجلات متاحة، لذلك يجب أن يكون التثبيت سهلاً (لا حاجة إلى مترجم C).
لقد حاولت ذلك، لكنه لا يعمل. آسف لسماع ذلك! يمكنك محاولة طلب المساعدة في غرفة الدردشة أو المنتدى، أو الإبلاغ عن خطأ، أو نشر سؤال على StackOverflow، وسنبذل قصارى جهدنا لمساعدتك.
الثلاثي رائع، وأريد المساعدة في جعله أكثر روعة! أنت الأفضل! هناك الكثير من العمل الذي يتعين القيام به - ملء الوظائف المفقودة، وإنشاء نظام بيئي للمكتبات التي تستخدم Trio، واختبار قابلية الاستخدام (على سبيل المثال، ربما تحاول تعليم نفسك أو صديق استخدام Trio وإنشاء قائمة بكل رسالة خطأ تضغط عليها وتحديد مكانها). هل شعرت بالحيرة؟)، تحسين المستندات، ... راجع دليلنا للمساهمين!
ليس لدي أي خطط فورية لاستخدامه، لكني أحب الاطلاع على تصميم مكتبة الإدخال/الإخراج! هذا غريب بعض الشيء؟ لكن لنكن صادقين، سوف تتأقلم بشكل رائع هنا. لدينا منتدى فرعي كامل لمناقشة التزامن المنظم (نرحب بمطوري الأنظمة الأخرى!). أو قم بالاطلاع على مناقشتنا حول خيارات التصميم وقائمة القراءة والقضايا الموسومة بمناقشة التصميم.
أريد أن أتأكد من أن محامي شركتي لن يغضبوا مني! لا تقلق، Trio مرخص بموجب اختيارك لـ MIT أو Apache 2. راجع الترخيص للحصول على التفاصيل.
يرجى من المساهمين اتباع قواعد السلوك الخاصة بنا في جميع مساحات المشروع.