この質問に答えるのが信じられないほど簡単であるか、ばかのように聞こえたら申し訳ありません。あるファイル、pygame イベント ループ、ブリットなどでスクリプトを実行してから、独自のイベント ループとブリットなどを持つ別のファイル SelectWorld.py に切り替える方法を考えています。 main 関数、元のファイルをまだ開いているために速度が低下しますか、それともそれで問題ありませんか? SelectWorld.transition() のようなもの。前もって感謝します。
3 に答える
ここに提案があります: スクリプトの 2 つのバージョンを作成します。すべてを1つにダンプします。もう 1 つは、スマートなファイル名を使用してコードを個別のファイルにレイアウトするという適切な処理を行います。
次に、次のコマンドで最初のコマンドを実行します。
$ time python my_game_all_in_one.py
(ドル記号はコマンド ライン プロンプトを表します。) そして、2 番目を実行します。
$ time python my_game.py
このtime
コマンドは、ゲームの実行に実際にかかった時間と、CPU 時間の両方をリアルタイムで表示します。両方のコマンドをそれぞれ 10 回実行し、それぞれの平均をとります。
これは「プロファイリング」と呼ばれ、どのアプローチが最適か、または違いがあるかどうかを判断するのに役立ちます。
ここで必要なのは、2 つの異なるアプリケーション間で変数を共有できるようにすることです。イベント ループ、ブリットなどを含む 2 つの異なるスクリプトです。したがって、定義上、それらは異なるプロセス上にある必要があります (同時に実行する必要がある場合)。 .
これを行うには、主に次の 2 つの方法があります。
1 - クライアント サーバー アーキテクチャ (ゲーム サーバーのようなもの) (サーバーとクライアントの両方を同じマシンで実行できます)
2 - 変数の通信と同期の方法が異なる、同じマシン上で実行される 2 つのプロセスによるマルチプロセッシング。(パイプキュー、イベントなど)
ゲームの一種の変数プロファイリングを行おうとしていることを理解していますか? ゲームのデバッグまたはテストに使用する場合。ちょっとした有用な情報を得るには、たくさんのコードが必要だと思います (ゲームの実行速度が速すぎて、変数を分析できない可能性があるため)。
これらの選択肢があります:
1 - import pdb, pdb.set_trace(): 関数を呼び出した行でプロセスを停止し、ターミナルで変数の値を確認できます。
2 - Eclipse を使用できます (pyDev を使用): 非常に優れたデバッガー (行ごと)
3 - Unittest、Mock: 古いコード (unittest を使用) を壊したり、新しいコードをテストしたりするときに簡単に確認できるため、便利なので、使い始める必要があります...
お役に立てば幸いです:)
これに対する答えは非常に単純であることが判明し、Python を学習したばかりのときにこれを尋ねました。別のファイルから関数を呼び出してすべての作業を実行させるだけでは、速度が低下することはありません。みんな、すべての答えをありがとう。