Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 18, 2014 17:29:07

Emily
Зарегистрирован: 2014-08-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Написала простой скрипт, что то типа такого:

#!/usr/bin/python3.2
# -*- coding:utf-8 -*-
for j in range(0, 3000000):
    word = '123456789qwertyuio'
    for i in range(0, len(word)):
        a = word[::-1]

, но почему то при запуске время выполнения постоянно разное, причем ладно бы в пределах каких то погрешностей, но оно может увеличиваться-уменьшаться раза в два, вот сколько времени выполнялся этот скрипт:
18.980150938034058
24.253476858139038
37.63626003265381
23.561245918273926
28.73568892478943
22.22376012802124
28.90654492378235

Объясните, пожалуйста, с чем это может быть связано и что делать, чтобы такого избежать. Заранее спасибо!

Отредактировано Emily (Авг. 18, 2014 17:29:38)

Офлайн

#2 Авг. 18, 2014 18:21:22

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Emily

Замеры чем делаешь?



Офлайн

#3 Авг. 18, 2014 18:34:02

Emily
Зарегистрирован: 2014-08-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Budulianin, использую time.time(). Так же использовала time python3 script.py, результаты такие же.

Офлайн

#4 Авг. 18, 2014 18:40:21

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Emily

ОС какая?

Замеры делают с помощью модуля timeit

from timeit import Timer
def func():
    for j in range(0, 3000000):
        word = '123456789qwertyuio'
        for i in range(0, len(word)):
            a = word[::-1]
print(Timer('func()', setup='from __main__ import func').repeat(number=1, repeat=3))
[12.133208990097046, 11.813178062438965, 11.830319166183472]



Отредактировано Budulianin (Авг. 18, 2014 18:41:14)

Офлайн

#5 Авг. 18, 2014 18:46:56

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Emily
использую time.time()

Покажи код, с замером времени.



Офлайн

#6 Авг. 18, 2014 18:53:21

Emily
Зарегистрирован: 2014-08-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта


Budulianin

home@ubuntu:~/Documents/test$ python3 test2.py
[38.01542901992798, 36.42211103439331, 21.37428307533264]
всё равно разброс большой.
ОС Ubuntu 12.04

Офлайн

#7 Авг. 18, 2014 18:55:11

Emily
Зарегистрирован: 2014-08-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Budulianin
предыдущая версия с замером

#!/usr/bin/python3.2
# -*- coding:utf-8 -*-
import time
start = time.time()
for j in range(0, 3000000):
    word = '123456789qwertyuio'
    for i in range(0, len(word)):
        a = word[::-1]
print (time.time()-start)

Офлайн

#8 Авг. 18, 2014 18:58:44

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Emily
всё равно разброс большой.

Чудес не бывает. У тебя куча тяжёлых процессов запущено :)? В файле test2.py, точно мой код?

В Python3 эта строчка бессмысленна:
# -*- coding:utf-8 -*-

Да и эта, не нужна
#!/usr/bin/python3.2


import time
def func():
    start = time.time()
    for j in range(0, 3000000):
        word = '123456789qwertyuio'
        for i in range(0, len(word)):
            a = word[::-1]
    print(time.time()-start)
for i in range(3):
    func()

11.69328784942627
12.02062201499939
11.892544984817505



Отредактировано Budulianin (Авг. 18, 2014 19:05:22)

Офлайн

#9 Авг. 18, 2014 19:10:06

Emily
Зарегистрирован: 2014-08-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Budulianin
да в том то и дело, что кроме терминала и редактора больше ничего не открыто. Для верности проверяла на другой машине с такой же операционкой - результат тот же

Да, в файле test2.py твой код, но в начале

#!/usr/bin/python3.2
# -*- coding:utf-8 -*-
, вряд ли это может быть связано с проблемой?

Последний результат такой
[34.38101601600647, 30.78873300552368, 28.927676916122437]

Офлайн

#10 Авг. 18, 2014 19:10:53

Emily
Зарегистрирован: 2014-08-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачущее время выполнения скрипта

Budulianin
последний результат для кода без первых двух строк

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version