擅长:python、mysql、java
<p>标准python实现(“cpython”)的内部不是线程安全的。在</p>
<p>因此使用锁(<a href="http://wiki.python.org/moin/GlobalInterpreterLock" rel="nofollow">Global Interpreter Lock</a>)来确保一次只运行一个python线程。当一个正在运行的线程执行I/O操作时,这个锁就会被释放,但是如果这个锁没有被释放,其他线程就没有机会运行。在</p>
<p>我怀疑这就是问题的根源。它取决于sane绑定的实现。在</p>
<p>您可以尝试使用<a href="http://docs.python.org/library/multiprocessing.html" rel="nofollow">^{<cd1>}</a>模块而不是<code>threading</code>。多处理为长时间运行的任务启动了一个完全不同的进程,因此它不受GIL的约束。但是您必须使用<code>multiprocessing</code>提供的工具,比如<code>Queue</code>和{<cd5>}在进程之间交换信息。在</p>