无法在嵌入 C++ 的 Python 代码中修改 time.time() 返回的值
Posted
技术标签:
【中文标题】无法在嵌入 C++ 的 Python 代码中修改 time.time() 返回的值【英文标题】:Can't modify value returned by time.time() in Python code embedded in C++ 【发布时间】:2010-02-25 12:16:19 【问题描述】:我遇到了一个非常奇怪的问题。
以下代码:
import time
target_time = time.time() + 30.0
在从 C++(嵌入)调用的 Python 代码中不起作用!
target_time 与 time.time() 具有相同的值,任何修改它的尝试都会使 pdb 控制台中的值保持不变...
alt text http://dl.dropbox.com/u/3545118/time_bug.png
它发生在我在 Ogre3D 图形引擎中调用 root.initialise() 之后,但仅在使用 Direct3D 时发生,而不是在使用 OpenGL 时。
所以这可能与 Direct3D 有关...
【问题讨论】:
【参考方案1】:在该线程中找到了答案: http://www.ogre3d.org/forums/viewtopic.php?f=1&t=55013&p=373940&hilit=D3DCREATE_FPU_PRESERVE#p373940
http://msdn.microsoft.com/en-us/library/ee416457%28VS.85%29.aspx
D3DCREATE_FPU_PRESERVE 将 Direct3D 浮点计算的精度设置为调用线程使用的精度。如果不指定此标志,Direct3D 默认为单精度舍入到最近模式,原因有两个:
双精度模式会降低 Direct3D 性能。 Direct3D 的某些部分假定浮点单元异常被屏蔽;取消屏蔽这些异常可能会导致未定义的行为。【讨论】:
以上是关于无法在嵌入 C++ 的 Python 代码中修改 time.time() 返回的值的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 程序中嵌入 python-opencv 的问题(单张图片正常,但在网络摄像头上失败)
如何在未安装 python 的系统上嵌入 python 代码来执行 C++ 代码
在 python 中嵌入 c++ 代码会使你的 python 应用程序更快吗? [关闭]