Tôi đã chơi với pyglet. Nó rất đẹp. Tuy nhiên, nếu tôi chạy mã của tôi, mà là trong một tập tin thực thi (gọi nó là game.py) bắt đầu bằng thông thườngKiểm soát lập trình tối ưu hóa python?
#!/usr/bin/env python
bằng cách làm
./game.py
thì đó là một chút thời gian. Nhưng nếu tôi chạy nó với
python -O ./game.py
hoặc
PYTHONOPTIMIZE=1 ./game.py
sau đó nó siêu mịn.
Tôi không quan tâm nhiều vì sao nó chạy chậm mà không tối ưu hóa; tài liệu của pyglet đề cập đến việc tối ưu hóa vô hiệu hóa nhiều xác nhận và cũng kiểm tra lỗi của OpenGL, và tôi rất vui khi để nó ở đó.
Câu hỏi của tôi là: cách mọi người phân phối mã Python đảm bảo người dùng cuối (không quan tâm đến việc gỡ lỗi hoặc sửa đổi mã) chạy phiên bản được tối ưu hóa của mã. Chắc chắn có một số cách tốt hơn chỉ cần nói với mọi người để đảm bảo rằng họ sử dụng tối ưu hóa trong các ghi chú phát hành (mà họ có lẽ sẽ không đọc anyway)?
Trên Linux tôi có thể dễ dàng cung cấp một kịch bản ./game
để chạy các tập tin cho người dùng cuối:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
nhưng đó không phải là rất cross-platform.
Tôi có một ý tưởng tôi nên để có thể có sự thay đổi #!
để
#!/usr/bin/env PYTHONOPTIMIZE=1 python
hoặc
#!/usr/bin/env python -O
nhưng những người dường như không làm việc như mong đợi, và tôi không chắc chắn họ sẽ làm gì trên Windows.
Có cách nào để kiểm soát tối ưu hóa từ bên trong mã mà tôi không biết? Cái gì như:
import runtime
runtime.optimize(True)
gì được coi là thực hành tốt nhất trong lĩnh vực này bởi những người vận chuyển mã python đa nền tảng?
Đây không phải là câu trả lời vì câu trả lời S.Lotts hoàn toàn chính xác và đầy đủ. Đi với game.sh và game.bat, nó hoạt động. Nhưng chỉ cần một bình luận: #! dòng hoàn toàn không có gì trên Windows, nó hoàn toàn bị bỏ qua. –