擅长:python、mysql、java
<p>我想是因为你只会打破第一个while循环</p>
<pre><code># Perform multi-request.
SELECT_TIMEOUT = 1.0
num_handles = len(requests)
while num_handles: # while nr.1
ret = m.select(SELECT_TIMEOUT)
if ret == -1: continue
while 1: # while nr.2
ret, num_handles = m.perform()
print "In while loop of multicurl"
if ret != pycurl.E_CALL_MULTI_PERFORM: break
'**'
</code></pre>
<p>所以如果你使用'break'会发生什么,你将打破当前while循环(当你使用break时,你处于第二个whileloop中)
程序的下一步将接受这里写着“**”的行,因为这是它跳回的最后一行。
(指向while num_句柄中的第一行)
再往前走3行,就到了“while1”和soforth。。这就是你得到inf循环的方法。在</p>
<p>因此,要解决这个问题:</p>
^{pr2}$
<p>所以这里发生的是,一旦它脱离嵌套的while循环,它也会自动从第一个循环中中断。
(另外,由于<code>while</code>,以及之前使用的<code>continue</code>,它永远不会到达行</p>