سؤال

لا أحد يعرف مصير مترجم العالمي قفل في بيثون 3.1 ضد C++ خاصية تعدد التكامل

هل كانت مفيدة؟

المحلول

وGIL لا يزال هناك في سي بايثون 3.1؛ و مفرغ السنونو مشاريع الأهداف (من بين العديد من ويعزز الأداء الأخرى) لإزالة نهاية المطاف، ولكن انها لا تزال وسيلة من أهدافها، وتعمل على 2.6 الأول بهدف ترقية في نهاية المطاف إلى 3.X لأي العاشر سيكون الحالية في الوقت الذي يعتبر النسخة 2.y الذي يتعين القيام به. في الوقت الراهن، متعدد المعالجة (بدلا من خيوط) تبقى الطريقة المفضلة للاستخدام متعددة النوى في سي بايثون (و IronPython جيثون على ما يرام جدا، لكنها لا تدعم بيثون 3 حاليا، كما أنها لا تجعل C التكامل ++ كل ما من السهل أيضا؛ - ).

نصائح أخرى

لن تحدث تغييرات كبيرة في جيل بايثون 3.2.نلقي نظرة على ما هو الجديد في بيثون 3.2, ، الخيط الذي بدأ في القائمة البريدية.

في حين أن التغييرات لا تعني نهاية جيل ، فإنها هيرالد يحتمل أن تكون هائلة المكاسب الأداء.

Update0

  • الأداء العام مكاسب جديدة مع جيل في 3.2 أنطوان Pitrou كانت ضئيلة ، وركز بدلا من ذلك على تحسين مسائل الخلاف التي تنشأ في بعض الحالات الزاوية.
  • وهو الإعجاب الجهد بواسطة ديفيد بيزلي تم تنفيذ جدولة تحسن الأداء بشكل ملحوظ عندما وحدة المعالجة المركزية IO بد خيوط مختلطة, الذي كان للأسف اسقاطها.
  • فإن مفرغ ابتلاع العمل اقترح دمج في بيثون 3.3 ، ولكن هذا تم سحبه بسبب عدم التوصل إلى نتائج في هذا المشروع. PyPy الآن هو المفضل حاليا طلب التمويل لإضافة Python3k الدعم.هناك فرصة ضئيلة جدا أن PyPy سوف تصبح الافتراضي في الوقت الحاضر.

الجهود التي بذلت خلال السنوات ال 15 الماضية لإزالة جيل من CPython ولكن في المستقبل المنظور هو البقاء هنا.

وسوف GIL لن يؤثر على التعليمات البرمجية التي لا تستخدم أدوات الثعبان. في نمباي، نحن الافراج عن GIL لرمز الحسابية (المكالمات الجبر الخطي، الخ ...)، وقانون الأساسي يمكن استخدام خاصية تعدد بحرية (في الواقع، وتلك هي مكتبات 3rd الطرف عموما التي لا تعرف شيئا عن الثعبان)

ووGIL أمر جيد.

وجعل مجرد طلبك C ++ الافراج عن GIL حين تفعل عملها مؤشرات. وسوف تستمر كود بايثون لتشغيل في المواضيع الأخرى، لم تفسد. الحصول فقط على GIL عندما يكون لديك للمس الأشياء الثعبان.

وأعتقد أنه سيكون هناك دائما GIL. والسبب هو الأداء. جعل جميع انخفاض مستوى الوصول موضوع آمنة - يعني وضع مزامنة حول كل عملية تجزئة الخ ثقيلة. تذكر أن بيان بسيط مثل

self.foo(self.bar, 3, val)

قد يكون بالفعل لا يقل عن 3 (إذا فال هو العالمية) عمليات البحث جدول هاش في الوقت الحالي وربما حتى أكثر من ذلك بكثير إذا كان التخزين المؤقت طريقة ليست ساخنة (اعتمادا على عمق الميراث الطبقة)

وانها مكلفة - وهذا هو السبب في تراجع جافا الفكرة وقدم hashtables التي لا تستخدم اتصال مراقبة للتخلص من لها "جافا بطيء" العلامة التجارية

.

وكما فهمت عليه اسم "brainfuck" جدولة سيحل محل GIL من الثعبان 3.2

BFS bainfuck جدولة

وإذا كان GIL وفي الحصول على الطريق، ومجرد استخدام متعدد المعالجة حدة . فإنه يولد عمليات جديدة ولكن يستخدم طراز مؤشر الترابط و(معظم) API. وبعبارة أخرى، يمكنك أن تفعل التوازي القائم على العملية بطريقة تشبه الموضوع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top