擅长:python、mysql、java
<p>在通过嵌入式解释器从不同线程运行包含<code>pyxhook</code>的脚本时,我也遇到了类似的问题。在</p>
<p>如果一次只运行一个脚本,就没有问题。钩子被正确释放,但是如果两个或多个脚本并行运行,钩子不会停止。虽然我的脚本正确返回,来自<code>pyxhook</code>的<code>cancel()</code>也正确返回,但我认为仍有一些与<code>xlib</code>相关的线程正在运行。这个<code>pyxhook</code>问题的解决方法是保持一个全局标志来监视<code>pyxhook</code>是否已经在运行,而不是从每个线程重新初始化{<cd1>}。在</p>
<p>现在关于<code>Py_Finalize()</code>,如果<code>pyxhook</code>在每个线程中被重新初始化:</p>
<p>如果在调用<code>Py_Finalize()</code>之前不调用<code>PyEval_AcquireLock()</code>和<code>PyThreadState_Swap()</code>,它将在Linux中终止,但不会在Win32中终止。在Win32中,如果我不执行<code>PyEval_AcquireLock()</code>和<code>PyThreadState_Swap()</code>,就会出现问题。在</p>
<p>对于我来说,暂时的解决方案是在两个不同的操作系统中以不同的方式终止。在</p>