Frage

Ich spiele mit Pyglet . Es ist sehr nett. Allerdings, wenn ich meinen Code ausführen, die in einer ausführbaren Datei ist (nennen wir es game.py) mit dem Präfix der üblichen

#!/usr/bin/env python

, indem Sie

./game.py

dann ist es ein bisschen klobig. Aber wenn ich laufe es mit

python -O ./game.py

oder

PYTHONOPTIMIZE=1 ./game.py

dann seine super-glatt.

Ich bin viel ist es egal, warum es langsam ohne Optimierung läuft; Pyglet in der Dokumentation erwähnt, dass Optimierungs deaktiviert zahlreichen behauptet und auch die Fehlerprüfung OpenGL, und ich bin glücklich, es dabei zu belassen.

Meine Frage ist: Wie verteilen Menschen Python-Code sicherstellen, dass die Endnutzer (mit Null Interesse an Debugging oder Ändern des Code), um die optimierte Version des Codes ausgeführt werden. Sicherlich gibt es einige besseren Weg, als nur die Menschen zu sagen, dass sie in den Release Notes verwenden Optimierung zu machen (was sie wahrscheinlich sowieso nicht lesen)?

Unter Linux kann ich leicht ein ./game Skript liefern die Datei für Endbenutzer auszuführen:

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

, aber das ist nicht sehr Cross-Plattform.

Ich habe eine Idee, ich sollte die #! Zeile

ändern können
#!/usr/bin/env PYTHONOPTIMIZE=1 python

oder

#!/usr/bin/env python -O

aber die scheinen nicht wie erwartet zu funktionieren, und ich bin nicht sicher, was sie unter Windows tun würden.

Gibt es eine Möglichkeit Optimierung innerhalb der Code zur Steuerung von Ich bin nicht bewusst? So etwas wie:

  import runtime
  runtime.optimize(True)

Was von Menschen in diesem Bereich Best Practice angesehen Shipping Multi-Plattform-Python-Code?

War es hilfreich?

Lösung

"Unter Linux kann ich leicht einen ./game Skript liefert die Datei für Endbenutzer ausführen:"

Richtig.

"aber das ist nicht sehr Cross-Plattform."

Halb richtig. Es gibt genau zwei Schalen Sprachen, die Materie. Standard Linux "sh" und Nicht-Standard-Windows "Fledermaus" (a / k / a cmd.exe) und das ist alles dort ist heute. [Als ich ein Kind war, gab es Open VMS DCL und seltsame Shell-Sprache der Data General und RSX-11 und alle Arten von großen Sachen. Gott sei Dank für die Posix-Standard.]

game.sh

python -O game.py

game.bat

python -O game.py

Interessanterweise ist die Dateien sind die gleiche, nur die Verlängerung (und das Dateiformat) mußten geändert werden, die verschiedenen Betriebssysteme glücklich zu machen.

Wenn Sie true one-size-fits-all Cross-Plattform, müssen Sie daran denken, dass Python eine Shell-Sprache ist. Diese Art der Sache funktioniert, auch.

game-startup.py

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

Andere Tipps

Ihre Frage zu beantworten (als gegensätzliche Ihr Problem zu Fixierung, die S. Lott perfekt war), ich denke, eine Menge Zeit Menschen, die Python-Code verteilen darüber keine Sorge, weil es selten ist für die Optimierung Flagge zu haben, jede Wirkung. Ich glaube Pyglet die einzige Ausnahme, die ich von seit Jahren gehört habe Python zu verwenden. Zitiert aus dem Python docs , "Der Optimierer zur Zeit nicht viel helfen ; es entfernt nur Aussagen behaupten“

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top