3

私は非常に奇妙な Python のバグを抱えています。おそらくインタープリターのバグでさえあります。
私の最小限の再現コードは、次のようになります。

from sys import stdout
print "Starting"
stdout.flush()

from camera import py_SaperaCamera
print "Imported"
stdout.flush()

cam = py_SaperaCamera.Camera()
print "Constructed"
stdout.flush()

del cam
print "Destructed"
stdout.flush()

このプログラムの実行がスムーズに進まない理由は 1e6 ほど考えられます。実際、これだけ多くのアルゴリズムを生成できました。あなたの娯楽のためにいくつかを以下に示しますが、パンチラインまでスキップしてください。

  1. カスタム Cython モジュール py_SaperaCamera のインポート中
  2. デバイスを制御するオブジェクトを初期化または削除した結果として
  3. セグメンテーション違反、メモリ エラー、いたずらのためにオペレーティング システムによって強制終了される
  4. 雷、停電、再臨。なんでもいい!

なんらかの方法で実行が停止された場合、それは本当にありがたいことです。たとえば、segfault、boost:: からの愛情のこもったメッセージなどです。これは恒星でしょう。

いいえ。代わりに、次の出力が得られます。

Starting
Imported
Constructed
Starting
Imported
Constructed
Starting
Imported
Constructed
Starting
Imported
Constructed
Starting
Imported
Constructed
Starting
Imported
Constructed

注意深い読者は、プログラムが 6 回実行されたように見えることに気付くでしょう。これは明らかに獣の痕跡です。だから私の質問は簡単に言えば、この出来事に値するために前世で何をしたのですか?

4

1 に答える 1

1

コメントアウトしないのはなぜcam = py_SaperaCamera.Camera()ですか?次に、Camera クラスのインスタンス化がうまくいかないかどうかがわかります。これにより、問題の検索範囲が狭まる可能性があります。

于 2013-01-18T17:34:12.097 に答える