我想使用Pycurl执行多请求。代码是: m、 添加_句柄(句柄) 请求.append(手柄,响应)
# Perform multi-request.
SELECT_TIMEOUT = 1.0
num_handles = len(requests)
while num_handles:
ret = m.select(SELECT_TIMEOUT)
if ret == -1: continue
while 1:
ret, num_handles = m.perform()
print "In while loop of multicurl"
if ret != pycurl.E_CALL_MULTI_PERFORM: break
问题是,这个循环要花很长时间才能运行。它没有终止。 有谁能告诉我,它是做什么的,有什么可能的问题吗?在
你查过PyCurl的官方代码了吗?下面的代码实现了multi-stuff,我试着执行它,我能够在300秒内并行地抓取10000个url。你到底想达到什么目的?如果我错了,请纠正我。在
我想是因为你只会打破第一个while循环
所以如果你使用'break'会发生什么,你将打破当前while循环(当你使用break时,你处于第二个whileloop中) 程序的下一步将接受这里写着“**”的行,因为这是它跳回的最后一行。 (指向while num_句柄中的第一行) 再往前走3行,就到了“while1”和soforth。。这就是你得到inf循环的方法。在
因此,要解决这个问题:
^{pr2}$所以这里发生的是,一旦它脱离嵌套的while循环,它也会自动从第一个循环中中断。 (另外,由于
while
,以及之前使用的continue
,它永远不会到达行相关问题 更多 >
编程相关推荐