使用线程提高 Python 性能

2024-10-01 22:41:50 发布

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

据我所知,boost::python和boost::thread似乎不太喜欢对方。在

请参考http://pastebin.com/Cy123mJK

这是我在boost::python和boost::thread应用程序中遇到的问题的简化。在

如果有人能告诉我为什么会出现这些问题,我就不知道了,因为我严格地确保python交互是一次用一个线程完成的。在

在某个时候,程序会以一个segfault崩溃,原因并不明显。而且,也不可能赶上这次车祸看起来。。。在

非常感谢帮助!在


Tags: 程序com应用程序http原因线程threadboost
1条回答
网友
1楼 · 发布于 2024-10-01 22:41:50

您正在Producer::run()Consumer::run()中同时在多个线程中运行python。在

确切地说,在锁定互斥体之前运行以下命令:

boost::python::object writer = this->k->Get<boost::python::object>("write");

也许你没有意识到,当你在Keeper::Get中调用boost::python::object::operator[](const std::string&)时,Boost最终调用了PyObject_GetItem。在锁定之后和使用返回函数之前,您需要将Get调用移动到正确的位置:

^{pr2}$

编辑:删除Py_Finalize()。是的,你是对的,boost.python不喜欢。在

相关问题 更多 >

    热门问题