我想知道wxPython与在不同内核上运行的东西的交互,以及wxPython在运行时是否释放GIL。
我假设当我启动一些命令时需要一段时间,wxPython
启动wxWidgets
c ++代码,该代码在multiple cores
和某种方式releases the GIL
上运行,直到任务完成然后回来。但是我没有任何依据。这会发生吗?
引擎盖下究竟发生了什么?
答案 0 :(得分:1)
每当调用wx C ++函数或方法时,GIL都会自动释放并重新获取。这可能有点过分,因为有很多事情很快且不会阻塞,而且不能释放/重新获取GIL可能更有效,但这种方法确保我们不会错过这样做会阻止的东西。
此外,只要有事件调度到Python事件处理程序,或者调用Python中覆盖的虚拟方法等,就会在进入该代码之前获取GIL,然后再次释放。