1
SR1 2013-07-20 21:48:58 +08:00 1
会不会是你发起连接过多,
被服务器限制了或者服务器本身性能不佳所以卡住了 你设置一下超时时间,如果超时的话重新发起一次请求试试 |
2
yuelang85 2013-07-20 23:05:19 +08:00 1
同意1楼,设定下超时看看?
别的问题没看出来,看出两个地方有性能问题: 第一个: 22行:你这里字符串拼接用的是 加法,这样会导致产生八十多个字符串对象,而且第N+1号字符串是第N号字符串超集。如果文本够大,你这个将会严重侵占内存。建议改成这种形式(行首句点表示缩进): result = [] for line in response: ....result.append(line) result_str = ''.join(result) 第二个,37行,三处问题。 1,range这个函数会生成list对象,浪费,建议使用xrange,他生成 迭代器,可以提高速度。 2,i这个变量,实际上是做为坐标取birthdayRange的值,那么这里就没有必要len(birthdayRange),而且还range一下。直接for i in birthdayRange,迭代birthdayRange的各个元素。 3,range(len(birthdayRange))在这种上下文中,用起来不好(xrange也是),比较高效的用法: i = 0 max = len(birthdayRange) while i < max: #这里用max是因为如果直接用len(),len函数会被调用len(birthdayRange) 遍。 ....pass #该干啥干啥 ....i+=1 如果你又需要序号i,有需要使用birthdayRange的元素,那么用enumerate。 |
3
pubby 2013-07-20 23:13:35 +08:00 via Android
抓取这种活,不要太爆力,自觉保持一个正常点的频率。
|
5
Zuckonit 2013-07-22 08:44:40 +08:00
strace 看一下
|
6
z50hz1988 2013-07-22 17:54:02 +08:00
用代理哇... 少年! 偷东西你还大义凛然的... 这样不好吧.
|