Найти - Пользователи
Полная версия: Скачущее время выполнения скрипта
Начало » Python для новичков » Скачущее время выполнения скрипта
1 2
Emily
Написала простой скрипт, что то типа такого:

#!/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

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

Замеры чем делаешь?
Emily
Budulianin, использую time.time(). Так же использовала time python3 script.py, результаты такие же.
Budulianin
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
Emily
использую time.time()

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

Budulianin
home@ubuntu:~/Documents/test$ python3 test2.py
[38.01542901992798, 36.42211103439331, 21.37428307533264]
всё равно разброс большой.
ОС Ubuntu 12.04
Emily
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)
Budulianin
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
Emily
Budulianin
да в том то и дело, что кроме терминала и редактора больше ничего не открыто. Для верности проверяла на другой машине с такой же операционкой - результат тот же

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

Последний результат такой
[34.38101601600647, 30.78873300552368, 28.927676916122437]
Emily
Budulianin
последний результат для кода без первых двух строк
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB