Python: случайная задержка 10 мс для цикла - PullRequest
0 голосов
/ 10 февраля 2019

Если я выполню этот код:

 def test():
  k = 0
  t = time.time()
  times = []

  for i in range(500):
      for j in range(500):
          k+=1
          t1 = time.time()-t
          t2 = time.time()-t
          times.append(t2-t1)
  return times

и нанесу на график задержки, я получу this .Кажется, что каждые 10 миллисекунд возникают задержки.Я заметил это при запуске другой программы, где эти пики составляли большую часть времени выполнения.

Итак, что вызывает эти задержки?Удаление функции time сокращает время выполнения, но в других более медленных функциях это не влияет на время выполнения, достаточное для того, чтобы быть причиной всплесков.

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

def search(img, pos, rad):
   t = time.time()

   times = []

   pos_tot = np.array([0,0]).astype(float)
   lum_tot = 0
   k = 1
   for i in range(max(pos[0]-rad, 0), min(pos[0]+rad+1, img.shape[0])):
       for j in range(max(pos[1]-rad, 0), min(pos[1]+rad+1, img.shape[1])):
           t1 = time.time()

           k+=1

           lum = int(((img[i][j][0] + img[i][j][0] + img[i][j][0])/3/30)**3) 

           pos_tot+= np.array([i,j]).astype(float)*lum

           t2 = time.time()-t
           times.append(t2-t1)

   return times

времена выглядят как это , появляясь примерно каждые 71 итерация.

Может ли это быть связано с ОС (Windows 10)?Если это так, как я мог избежать этих задержек?Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...