Время загрузки рассола Python неравномерно?

#python #performance #time #pickle #uniform

#питон #Производительность #время #соленый огурец #Униформа

Вопрос:

Может кто-нибудь объяснить, что здесь происходит?

 #!/usr/bin/python3  import pickle from time import perf_counter_ns as timer  def timeit (run) :  def timeit_ (f) :  def inner (*args, **kwargs) :  t1 = timer ()  for r in range (0, run) : result = f (*args, **kwargs)  tt = timer () - t1  print (f'{f.__name__} {tt / 1000000 / run:10.2f} ms')  return result  return inner  return timeit_  @timeit (10) def pickle_R_0 () :  with open ("sklearn_model_0.pickle", "rb") as f :  ats0 = pickle.load (f)  return ats0  @timeit (10) def pickle_R_1 () :  with open ("sklearn_model_1.pickle", "rb") as f :  ats1 = pickle.load (f)  return ats1  @timeit (10) def pickle_R_2 () :  with open ("sklearn_model_2.pickle", "rb") as f :  ats2 = pickle.load (f)  return ats2  pickle_R_0 () pickle_R_1 () pickle_R_2 ()  

ВОЗВРАТ

 pickle_R_0 263.07 ms pickle_R_1 1.43 ms pickle_R_2 1.48 ms  

Загруженные файлы-это один и тот же файл с разными именами. Почему первый занимает так много времени, в то время как последовательные загрузки выполняются намного быстрее, при этом разные функции и имена файлов?

Что заставило меня задуматься, так это то, что в моем проекте я импортирую эту модель sklearn, и с помощью профилировщика я заметил, что загрузка рассола теперь составляет до 6s! В то время как здесь тот же файл загружается намного быстрее на той же машине. Но времена все равно неравные, так что же это дает?

Комментарии:

1. Почти наверняка первая загрузка-это импорт классов, представленных загружаемым объектом. Вероятно, ему придется загрузить много знаний. При второй загрузке обнаруживается, что эти классы уже импортированы.

2. следовать за. Смотрит sys.module.keys() после первой загрузки и смотрит, стало ли она заметно длиннее.

3. def timeit (run) : просто используйте встроенный модуль timeit

4. @FrankYellin вы правы, я упустил из виду эту функцию.