هل من الممكن ترجمة بايثون محليًا (خارج كود بايت pyc)؟
-
03-07-2019 - |
سؤال
أتساءل عما إذا كان من الممكن إنشاء وحدة قابلة للتنفيذ من برنامج Python النصي.أحتاج إلى الحصول على أقصى قدر من الأداء والمرونة في برنامج Python النصي، دون الحاجة إلى التشغيل في بيئة Python.سأستخدم هذا الرمز لتحميل وحدات المستخدم عند الطلب لتخصيص تطبيقي.
المحلول
- هناك بيركس الذي يجمع python مثل المصدر إلى وحدات امتداد python
- rpython والذي يسمح لك بتجميع لغة بايثون مع بعض القيود على الواجهات الخلفية المختلفة مثل C وLLVM و.Net وما إلى ذلك.
- هناك ايضا تسليط الجلد الذي يترجم لغة بايثون إلى لغة C++، ولكن لا أستطيع أن أقول ما إذا كان ذلك جيدًا أم لا.
- PyPy ينفذ مترجم JIT الذي يحاول تحسين وقت التشغيل عن طريق ترجمة أجزاء مما يتم تشغيله في وقت التشغيل إلى رمز الجهاز، إذا كتبت لمترجم PyPy الذي قد يكون مسارًا ممكنًا.
- كتب نفس المؤلف الذي يعمل على JIT في PyPy نفسية سابقًا والذي يعمل على تحسين لغة بايثون في مترجم CPython.
نصائح أخرى
يمكنك استخدام شيء مثل py2exe لتجميع نص python الخاص بك في ملف exe، أو التجميد لثنائي Linux.
ولقد كان الكثير من النجاح باستخدام Cython ، الذي يقوم على أساس ويمتد بيركس:
<اقتباس فقرة>وCython هي لغة التي تجعل كتابة ملحقات C لبيثون لغة سهلة مثل بيثون نفسها. ويستند Cython على معروفة بيركس، ولكن يدعم حافة أكثر التقطيع وظائف وتحسينات.
واللغة Cython قريبة جدا لغة بيثون، ولكن Cython بالإضافة إلى ذلك يدعم الدعوة C وظائف ويعلن أنواع C على المتغيرات وسمات الطبقة. هذه يسمح للمترجم لتوليد جدا كفاءة كود C من التعليمات البرمجية Cython.
وهذا يجعل Cython اللغة المثالية لتغليف للمكتبات C الخارجية، وحدات C السريعة التي تسرع تنفيذ التعليمات البرمجية بايثون.
اقتباس فقرة>واعتقد انه يمكن استخدام جايثون لتجميع الثعبان إلى جافا بايت كود، ومن ثم ترجمة ذلك مع GCJ.