我想包装一个现有的C++库,它包含了<强>阻塞消息循环>和<强>调用处理函数<强> Python 使用<强> Boo::Python 。例如:
import my_boostpython_lib
def my_handler_fn():
do_something()
md = my_boostpython_lib.message_dispatcher()
# calls a C++ object method and blocks
md.run_message_loop(my_handler_fn)
从C++调用Python函数没有问题,但是消息循环需要释放^ {< CD1>},否则它将阻塞整个Python解释器(参见here,here和相关的boost ticket)
如前所述here在调用Python函数之前再次锁定GIL
非常重要。你知道吗
原则上,这听起来是可以理解的,但我想知道是否有任何优雅的解决方案,其中显示如何可以做到这一点。 例如,如果我只需要修改boost::python包装器(而不是修改我想要包装的库),那就太好了
你知道任何一个使用面向对象方法(可能还有释放GIL
的阻塞函数)的工作示例吗,它涉及到boost::python,回调,我可以从中复制一些最佳实践?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐