2014-09-01 2 views
1

Допустим, у меня есть вход с 10 миллионами линий. Я хочу знать, сколько времени требуется, чтобы сделать это:Источники скоростей контура Python

if line not in list: 
    list.append(line) 

Есть ли сайт или источник другого типа, который может сказать мне приблизительную скорость различных задач?

+3

Вы пробовали 'timeit'? –

ответ

3

Вы можете получить общее время работы вашей программы с этим:

time python3 program.py 

в вашем терминале. Это будет иметь результат, похожий на:

real 0m0.184s 
user 0m0.032s 
sys  0m0.015s 

Вы можете получить, сколько времени занимает определенную функцию для запуска n раз:

from timeit import timeit 

def foo(): 
    return 123456789 + 987654321 

n = 10000000 
time = timeit(foo, number=n) 
print(time) 

Вы можете также время, как долго секция кода взята с time:

from time import time 

start = time() 

# code to be timed 

finish = time() 
print(finish - start) 
+0

Объясните инструкцию печати по времени – AWE

+0

@ AWE Я упростил ее. –

+0

И ответ в секундах? – AWE

1

запустить эту команду на терминале:

time python your_file.py 

результат должен быть таким:

real 0m0.018s 
user 0m0.009s 
sys  0m0.009s 

что

real - refers to the actual elasped time 
user - refers to the amount of cpu time spent outside of kernel 
sys - refers to the amount of cpu time spent inside kernel specific functions 

подробнее о real, user, sys в THIS stachoverflow ответ от Con cernedOfTunbridgeWells.

Для поиска производительности линии ech вы должны использовать линейную синхронизацию и частоту выполнения с профилировщиком, поэтому line_profiler - это простой и ненавязчивый способ профилировать ваш код и использовать его, чтобы узнать, насколько быстро и как часто каждая строка кода выполняется в ваших сценариях. Вы можете установить line_profiler, что написанный Робертом Керн, вы можете установить пакет питона через пип:

$ pip install line_profiler 

чтения документации HERE.

Смежные вопросы