Windows Python程序重新启动(前世的罪恶)

2024-10-01 05:03:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常奇怪的Python bug,甚至可能是解释器中的bug。
我的最小复制代码看起来有点像:

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()

我能想到这个程序执行不太顺利的六个原因。事实上,我可以用算法生成那么多!下面提供了一些供您参考,但请跳到要点:

  1. 在我的自定义Cython模块py\u 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次,这是野兽的明显标志。所以我的问题很简单,我前世做了什么,值得发生这种事?你知道吗


Tags: 代码frompyimport错误stdout解释器bug