سؤال

لقد كنت ألعب مع Pyglet.. وبعد هذا جميل جدا. ومع ذلك، إذا قمت بتشغيل التعليمات البرمجية الخاصة بي، ما هو في ملف قابل للتنفيذ (اتصل به Game.py) مسبقا مع المعتاد

#!/usr/bin/env python

عن طريق القيام

./game.py

ثم انها clunky قليلا. ولكن إذا قمت بتشغيله

python -O ./game.py

أو

PYTHONOPTIMIZE=1 ./game.py

ثم السوبر السلس.

أنا لا أهتم كثيرا لماذا يدير بطيئة دون تحسين؛ تذكر وثائق Pyglet أن تحسين تعطيل العديد من التأكيدات وأيضا فحص الأخطاء في OpenGL، وأنا سعيد بتركها في ذلك.

سؤالي هو: كيف تقوم الأشخاص بتوزيع كود بيثون بتأكد من تشغيل المستخدمين النهائيين (مع فائدة صفرية في تصحيح الأخطاء أو تعديل التعليمات البرمجية) الإصدار الأمثل من التعليمات البرمجية. بالتأكيد هناك بعض الطريقة أفضل من مجرد إخبار الناس بالتأكد من استخدام تحسين التحسين في ملاحظات الإصدار (والتي ربما لن يقرأها على أي حال)؟

على لينكس أستطيع أن أقدم بسهولة ./game البرنامج النصي لتشغيل الملف للمستخدمين النهائيين:

#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*

لكن هذا ليس منصة عرضية للغاية.

لدي فكرة يجب أن أكون قادرا على تغيير #! خط

#!/usr/bin/env PYTHONOPTIMIZE=1 python

أو

#!/usr/bin/env python -O

لكن هؤلاء لا يعملون يعملون كما هو متوقع، وأنا لست متأكدا مما يفعلونه على Windows.

هل هناك طريقة للتحكم في التحسين من داخل التعليمات البرمجية، أنا غير مدركين؟ شيء مثل:

  import runtime
  runtime.optimize(True)

ما الذي يعتبر أفضل ممارسة في هذا المجال من قبل أشخاص الشحن متعدد الأساليب بيثون كود؟

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

المحلول

"في Linux، يمكنني بسهولة تقديم برنامج نصي ./game لتشغيل الملف للمستخدمين النهائيين:"

صيح.

"لكن هذا ليس منصة عرضية للغاية".

نصف صحيح. هناك بالضبط لغتين قذيفة تلك المسألة. نظام Linux القياسي "SH" وغير قياسي "BAT" (A / K / A CMD.EXE) وهذا كل شيء هناك في الوقت الحاضر. [عندما كنت طفلا، كان هناك اللغة VMS DCL و Data GenirD Language و RSX-11 وجميع أنواع الأشياء العظيمة. الحمد لله على قياسي بوسيكس.

لعبة

python -O game.py

lame.bat.

python -O game.py

ومن المثير للاهتمام أن الملفات هي نفسها، فقط تمديد ذلك فقط (وتنسيق الملف) يجب تغييره لجعل نظام التشغيل المختلفة سعيد.

إذا أردت صحيح منصة واحدة يناسب جميع المنصة عبر، عليك أن تتذكر أن بيثون هي لغة قذيفة. هذا النوع من الأشياء يعمل أيضا.

game-startup.py.

import subprocess
subprocess.Popen( "python -O game.py" )

نصائح أخرى

الإجابة على سؤالك (كمنافئ لإصلاح مشكلتك، والذي فعلت S. Lott بشكل مثالي)، وأعتقد أن الكثير من الوقت الأشخاص الذين يوزعون كود بيثون لا تقلق بشأن هذا الأمر، لأنه نادر في علم التحسين أن يكون له أي تأثير. أعتقد أن الكزجة هي الاستثناء الوحيد الذي سمعت به منذ سنوات استخدام بيثون. نقلا عن مستندات بيثون, "المحسن لا يساعد حاليا الكثير؛ فقط يزيل بيانات التأكيد".

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