Да, если такая точность требуется, используют System.nanoTime()
, но знают, что Вы тогда требуете Java 5 + JVM.
В моих системах XP, я вижу системное время, которое, как сообщают, по крайней мере <ударило> 100 микросекунд забастовка> 278 наносекунды использование следующего кода:
private void test() {
System.out.println("currentTimeMillis: "+System.currentTimeMillis());
System.out.println("nanoTime : "+System.nanoTime());
System.out.println();
testNano(false); // to sync with currentTimeMillis() timer tick
for(int xa=0; xa<10; xa++) {
testNano(true);
}
}
private void testNano(boolean shw) {
long strMS=System.currentTimeMillis();
long strNS=System.nanoTime();
long curMS;
while((curMS=System.currentTimeMillis()) == strMS) {
if(shw) { System.out.println("Nano: "+(System.nanoTime()-strNS)); }
}
if(shw) { System.out.println("Nano: "+(System.nanoTime()-strNS)+", Milli: "+(curMS-strMS)); }
}
На самом деле самый простой способ:
import urllib2 # the lib that handles the url stuff
data = urllib2.urlopen(target_url) # it's a file like object and works just like a file
for line in data: # files are iterable
print line
Вам даже не нужны «строки чтения», как предложил Уилл. Вы можете даже сократить его до
import urllib2
for line in urllib2.urlopen(target_url):
print line
. Но помните, что в Python важна удобочитаемость.
Однако это самый простой, но не безопасный способ, потому что большую часть времени при сетевом программировании вы не знаете, насколько ожидаемые данные будут соблюдены. Так что, как правило, вам лучше читать фиксированный и разумный объем данных, который, как вы знаете, будет достаточным для ожидаемых данных, но предотвратит переполнение вашего скрипта:
import urllib2
data = urllib2.urlopen("http://www.google.com").read(20000) # read only 20 000 chars
data = data.split("\n") # then split it into lines
for line in data:
print line
Редактировать 09/2016: В python 3 и выше используйте urllib.request вместо urllib2
import urllib2
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"):
print line
import urllib2
f = urllib2.urlopen(target_url)
for l in f.readlines():
print l
На самом деле нет необходимости читать построчно. Вы можете получить все это так:
import urllib
txt = urllib.urlopen(target_url).read()