Python urllib读取url特定行的速度更快
我设法访问了robot web服务器,并读取了第166到171行的数据。这种情况每0.08秒(80毫秒)发生一次,请参见代码blow。使用Python版本3.6Python urllib读取url特定行的速度更快,python,urllib,Python,Urllib,我设法访问了robot web服务器,并读取了第166到171行的数据。这种情况每0.08秒(80毫秒)发生一次,请参见代码blow。使用Python版本3.6 print("Begin") import urllib.request import time #! INIT i = 0 d_coordinate = {} while(i < 100): t0 = time.time() response = urllib.request.urlop
print("Begin")
import urllib.request
import time
#! INIT
i = 0
d_coordinate = {}
while(i < 100):
t0 = time.time()
response = urllib.request.urlopen("http://192.168.41.110/MD/CURPOS.DG")
#Loop CURPOS
for line_number, line in enumerate(response):
if(line_number >= 166 and line_number <= 171):
#Zet de volledig uitgelezen line in array: response_lines
response_lines = [line]
#Filteren van data, wegschrijven in dictonary: d_coordinate
for line in response_lines:
key = line.split(b':')[0].decode()
value = float(line.split(b' ')[-1])
d_coordinate[key] = value
i = i + 1
print(d_coordinate)
t1 = time.time()
total = t1-t0
print ("Total Cyclic time: ", total)
print("\n\n")
每次读取整个文件时,这当然要花费大量的时间。是否可以只直接查看第166-171行?您可以通过以下方式获取所需的行:
添加导入itertools
然后替换:
for line_number, line in enumerate(response):
if(line_number >= 166 and line_number <= 171):
请注意,有172
而不是171
作为itertools。islice
约定与python索引切片(即inclusive-exclusive)兼容。您可以使用以下方式获取所需的行:
添加导入itertools
然后替换:
for line_number, line in enumerate(response):
if(line_number >= 166 and line_number <= 171):
请注意,有
172
而不是171
作为itertools。islice
约定符合python索引切片,即inclusive-exclusive。感谢您的回复。您的解决方案运行良好,只有程序仍然达到80毫秒的相同速度。还有其他解决方案吗?我没有任何现成的解决方案。我唯一可以建议的是更细粒度的时间测量。重试响应需要多少时间?循环需要多少时间?如果你对whoule进行注释,速度会有多快?如果主时间消费者正在检索优化lopp,这将没有帮助。如果没有任何代码,只需urllib,代码实际上需要0.08秒。是否有其他方法可以更快地获取数据?线程,多处理..?谢谢你的回复。您的解决方案运行良好,只有程序仍然达到80毫秒的相同速度。还有其他解决方案吗?我没有任何现成的解决方案。我唯一可以建议的是更细粒度的时间测量。重试响应需要多少时间?循环需要多少时间?如果你对whoule进行注释,速度会有多快?如果主时间消费者正在检索优化lopp,这将没有帮助。如果没有任何代码,只需urllib,代码实际上需要0.08秒。是否有其他方法可以更快地获取数据?线程,多处理。。?
for line_number, line in itertools.islice(enumerate(response), 166, 172):