3

私はここで新しいです、そしてこれは私の最初の質問です。Python 3.2.3でゲームを作成していますが、Timerオブジェクトがそのstart()メソッドを呼び出した後にインタープリターをクラッシュさせることがあるという問題が発生しました(50%の確率で発生し、Pythonというエラーウィンドウが常に表示されます)動作を停止し、終了する必要がありました)。

問題を特定できるようにコードを単純化してきましたが、この非常に単純なコードでインタープリターがクラッシュすることがわかりました。

from threading import Timer

def hello():
  print("hello, world")

t = Timer(1.0, hello)
t.start()

Pythonのインストールを修復しようとしましたが、機能しませんでした。私はWindows7でPythonを実行していますが、残念ながらこれまでに別のオペレーティングシステムを試す機会がなかったので、この問題の経験がある人がいれば、これに対する解決策をいただければ幸いです。みんな、ありがとう。

4

3 に答える 3

1

したがって、問題は解決され、Pythonの再インストールが役立ちました。ただし、修復インストールは実行されませんでした。これを知っておくとよいでしょう。ご協力いただきありがとうございます。

于 2012-07-11T14:34:18.337 に答える
1

スクリプトが終了した後、スレッドやタイマーを置き去りにしないでください。ただし、その問題に悩まされていない次のものがシステムで確実に機能するかどうかさえわかりません。

# This is NOT the suggested fix

from threading import Timer

def hello():
  print("hello, world")

t = Timer(1.0, hello)
t.start()
sleep(2)    

再現しようとしている他の人が問題に悩まされない理由は、彼らがスクリプトをスタンドアロン プロセスとして実行し、そのプロセスが終了するとタイマーがオペレーティング システムによって登録解除されるためです。一方、あなたはおそらく対話モードで作業しています。

本当の解決策は、タイマーとスレッドを操作するための対話モードの使用を停止することです。

詳細な背景はこちら.

于 2012-07-11T12:45:54.957 に答える