Найти - Пользователи
Полная версия: почему возникают задержки на пустом месте???
Начало » Python для экспертов » почему возникают задержки на пустом месте???
1 2 3 4
o7412369815963
я заметил что у меня веб страница генерируется долго времени 50мс, и все это время занимают какие-то задержки.

вот тест код:
# coding: utf-8

import time

def fun():
t = time.time()
msg = ''
for i in xrange(100000):
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
t2 = time.time()
d = (t2-t)*1000
t = t2
if d>1: print '%d' % d
fun()
результат:
15
15
15
16
16
14
как видно некоторые циклы съели по 15мс, почему?
чем больше нагрузка в цикле, тем чаще выскакивают паузы по 16мс

python 2.6.4, winXP, linux
crchemist
Можу через те що процесорного часу по різному надається:
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py 
1
5
92%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
1
3
2
91%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
13
2
17
19
13
5
18
5
8
9
8
2
7
8
2
2
2
2
2
2
2
2
69%
[crchemist@localhost tmp]$ man time
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
97%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
95%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
15
12
5
11
8
8
5
12
2
2
2
2
2
2
2
2
2
2
2
2
77%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
95%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
99%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
94%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
14
13
92%
o7412369815963
crchemist
Можу через те що процесорного часу по різному надається:
но почему такие разрывы большие, в общем случае один проход(1 итерация) проходит за 0,01мс, а разрыв = 15мс, т.е. в 1500 раз больше времени уходит на разрыв,

в итоге сама страница генерируется за 2мс, а с учетом разрывов выходит 50мс, грустно :(, что делать?
Андрей Светлов
Наверное у нас машины сильно разных весовых категорий - все происходит намного быстрее :)
Но тоже неравномерно.
Еще одна причина (кроме того, как OS распределяет время) в sys.getcheckinterval() - увеличение его помогает.

Но это все такая фигня…
o7412369815963
Андрей Светлов
Еще одна причина (кроме того, как OS распределяет время) в sys.getcheckinterval() - увеличение его помогает.
поигрался с этим параметром, лучше не стало

вычитал что существует сборки питона без GIL ( возможно из за которого возникают прерывания) python-safethread, но проект похоже заброшен.

получается джанго и подобные той же проблемой страдают?
k0sh
А причем тут GIL, поток то один? Возможно в какой то момент планировщик операционки переключает выполнение скрипта на другое приложение.
o7412369815963
k0sh
А причем тут GIL, поток то один? Возможно в какой то момент планировщик операционки переключает выполнение скрипта на другое приложение.
я думаю операционка ни причем, т.к.
1) этот код на других языках не вызывает прерывания (С++),
2) планировщик операционки переключает выполнение на более мелкие отрезки времени ( что не отлавливается таймером )

кстате этот скрипт грузит ядро(не проц) всего на 50%, видимо из за этих прерываний
lightcaster
Ваш скрипт в любом случае будет грузить одно ядро. Такова архитектура питона.
Прерывания тут не причем.
o7412369815963
lightcaster
Ваш скрипт в любом случае будет грузить одно ядро. Такова архитектура питона.
Прерывания тут не причем.
вопрос не про то


сейчас запустил на боевой виртуалке этот скрипт цикл увеличил до 10000000, работает все без прерываний!!!
ОС: linux CentOS
сейчас ещё раз убунту протестю и винду
pioner
o7412369815963
кстате этот скрипт грузит ядро(не проц) всего на 50%, видимо из за этих прерываний
На хабре есть тест сравнения производительности разных языков. Запустил на своем компе их тест (то же какой то цикл). Процессор загрузился всего на 25% (загрузил 4 ядра…очень неравномерно) :( … не ерундит питон? или проблема в системе?


lightcaster
Ваш скрипт в любом случае будет грузить одно ядро. Такова архитектура питона.
Прерывания тут не причем.
С многопоточностью не работал, но считал что ОС распределяет потоки внезависимости от приложения которые их (потоки) запустили. Т.е. ОС распределит все по ядрам, если проц. многоядерный. Просвятите, пожалуйста.
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