在python中线程C ++程序

时间:2019-03-17 09:29:36

标签: python c++ multithreading gil

我有一个用Kivy编写的Python应用程序,该应用程序使用C ++程序进行高速计算,然后返回一个值,而我的Python应用程序使用该值。

C ++程序包装在PyBind11中,然后导入到应用程序中,然后从Python调用。

我的问题是,当C ++程序执行时,我的应用程序停止了一会儿,我仍然希望后台进行一些事情。

我天真地认为可以通过线程化C ++调用来解决此问题,但转而考虑,我认为问题出在GIL上。我必须解锁GIL,如何实现?

1 个答案:

答案 0 :(得分:1)

没有看到任何代码,我只能推断出您的Python代码正在等待C ++代码完成,然后再执行其他操作。这可能意味着以下一项或两项:

  • 您不是C ++代码中的unlocking the GIL

  • 您没有任何其他活动的 Python 线程,因此在进行C ++调用时没有其他Python活动被编程为执行任何操作