擅长:python、mysql、java
<p>亲爱的赫尔穆特,我也有同样的问题,一根线挂在未来的等等。</p>
<p>看来你已经解决了这个问题。你能分享更多关于解决方案的信息吗?</p>
<p>升级版:</p>
<p>锁的原因终于找到了(至少在我的例子中是这样):这是由于Python中的导入锁。</p>
<p>考虑以下情况:</p>
<p>文件1.py:</p>
<blockquote>
<p>import file2</p>
</blockquote>
<p>文件2.py:</p>
<blockquote>
<p>create thread "thread2"</p>
<p>run "thread2"</p>
<p>wait until "thread2" finish with some function (let's say go Go())</p>
<p>def Go():</p>
<blockquote>
<p>import some_module</p>
<p>....</p>
</blockquote>
</blockquote>
<p>在这里,Go()中的导入将挂起,因为导入被锁定在主线程(由导入文件2)中,在Go()完成之前不会释放主线程。用户将看到strace hang on FUTEX_WAIT_PRIVATE。</p>
<p>要解决此问题,请将在将file2导入Do()函数期间执行的代码放在此处,并在导入file2之后运行它:</p>
<blockquote>
<p>import file2</p>
<p>file2.Do()</p>
</blockquote>