所以我有foo
一个普通浮点数的普通元组。在我的脚本中调用 map 会莫名其妙地引发所有事情的 Numpy 错误,即使代码没有任何问题。进入调试器并执行完全相同的代码不会产生预期的错误。有谁知道会发生什么?我完全不知所措。这怎么可能?
此外,对于那些要求使用最小脚本来重现问题的人:我无法使用简短的片段来重现它,而且我无法发布整个脚本,因为它是用于家庭作业的。
Traceback (most recent call last):
File "py_code\ps4-code.py", line 240, in <module>
doPairMatch(transA, transB, tapoints, tbpoints, 1, ransacTranslate)
File "py_code\ps4-code.py", line 217, in doPairMatch
print map(int, foo)
TypeError: expected a single-segment buffer object
>>> import pdb;pdb.pm()
> c:\homework\cs4495\ps4\py_code\ps4-code.py(217)doPairMatch()
-> print map(int, foo)
(Pdb) print foo
(603.0, 437.0)
(Pdb) print map(int, foo)
[603, 437]
(Pdb) print type(foo)
<type 'tuple'>
(Pdb) print int, map, type
<type 'int'> <built-in function map> <type 'type'>
(Pdb) map(type, foo)
[<type 'float'>, <type 'float'>]
(Pdb)
编辑:好吧,至少我知道这是怎么可能的。问题似乎是在垃圾收集期间发生的,这就是为什么错误随机出现在不相关的代码部分中的原因。据推测,gc 在 OpenCV 的某个地方触发了一个错误,导致一切崩溃。
Exception TypeError: 'expected a single-segment buffer object' in 'garbage colle
ction' ignored
Fatal Python error: unexpected exception during garbage collection
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.