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. 闪电,停电,第二次来临。任何!

如果执行以某种方式停止,我真的会喜欢它,也许是一个段错误,来自 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 回答