Python:for循环中的随机10ms延迟

2024-06-11 23:14:27 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我执行这个代码:

 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

时间看起来像this,大约每71次迭代出现一次

这是否与操作系统相关(Windows 10)?如果是的话,我怎样才能避免这些延误呢? 感谢您的帮助


Tags: 函数inposimgfortimedef时间