无法在嵌入 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 应用程序更快吗? [关闭]

将 python + numpy 代码嵌入到 C++ dll 回调中

在 C++ 中嵌入 python:奇怪的分段错误

c++ 中的嵌入式 python 代码 - 导入 python 库时出错