рдкреНрд░рджрд░реНрд╢рди рдХреЗрд╡рд▓ рд╕реАрдкреАрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ: рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХрд╛ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдзреАрдорд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╣реИ ред рдореБрдЭреЗ рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХреЛрдб рдХреЗ рдХреМрди рд╕реЗ рднрд╛рдЧ рд╕реАрдкреАрдпреВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВ?



рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд╛рдпрдерди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рд╣рдо рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдореЗрдВ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдЬреЛ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо рдпрд╣рд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ:

  • рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
  • рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдЬреЛ рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВред
  • рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ?


рдЙрди рдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрд╣рди рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╕реНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ:

  • рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиред рдЗрд╕рдореЗрдВ DNS рд▓реБрдХрдЕрдк рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛, рдХреБрдЫ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрди рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛, рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
  • рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХреЗрд╡рд▓ рд░реИрдо рдореЗрдВ рд╕реНрдерд┐рдд рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА, рдЬрдм рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд┐рд╕реНрдХ рд╕реЗ рд╕реАрдзреЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдРрд╕реЗ рдСрдкрд░реЗрд╢рди рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред
  • рддрд╛рд▓рд╛ред рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рд╕реА рдереНрд░реЗрдб рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдХрд╛рд░реНрдп рдХрд╛ рдирд┐рд▓рдВрдмрдиред рдХрднреА-рдХрднреА рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд╛рдо рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмреАрдЪ рд░реБрдХрдирд╛ред

рдЙрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдвреВрдВрдвреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ?

рд╡рд┐рдзрд┐ рд╕рдВрдЦреНрдпрд╛ 1: рдЙрд╕ рд╕рдордп рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ


рдкрд╛рдпрдерди рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░реЛрдлрд╛рдЗрд▓рд░, cProfile , рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдХреЗрддрдХреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЙрд╕ рд╕рдордп рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрдВ рдпрд╣ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЗ рдХрд┐рддрдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдмрд╣реБрд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо 9 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ рдФрд░ рдЙрд╕реА рд╕рдордп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ 7.5 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ 1.5 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдмрд┐рддрд╛рдПред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЯрд╛рдЗрдорд░ рдмрдирд╛рдПрдВ рдЬреЛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдорд╛рдкреЗрдЧрд╛:

 import os def not_cpu_time():    times = os.times()    return times.elapsed - (times.system + times.user) 

рдлрд┐рд░ рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдмрдирд╛рдПрдВ рдЬреЛ рдЗрд╕ рд╕рдордп рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ:

 import cProfile, pstats def profile_not_cpu_time(f, *args, **kwargs):    prof = cProfile.Profile(not_cpu_time)    prof.runcall(f, *args, **kwargs)    result = pstats.Stats(prof)    result.sort_stats("time")    result.print_stats() 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 >>> profile_not_cpu_time( ...   lambda: urlopen("https://pythonspeed.com").read()) ncalls tottime percall filename:lineno(function)    3  0.050  0.017 _ssl._SSLSocket.read    1  0.040  0.040 _socket.getaddrinfo    1  0.020  0.020 _socket.socket.connect    1  0.010  0.010 _ssl._SSLSocket.do_handshake  342  0.010  0.000 find.str  192  0.010  0.000 append.list 

рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрдВ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд╕реЙрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди DNS рд▓реБрдХрдЕрдк ( getaddrinfo ) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЯреАрд╕реАрдкреА рд╣реИрдВрдбрд╢реЗрдХ ( connect ) рдФрд░ рдЯреАрдПрд▓рдПрд╕ / рдПрд╕рдПрд╕рдПрд▓ рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛ред

рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЙрди рд╕рдордп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдм рд╢реБрджреНрдз рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡рд╣ рд╕рдордп рдЬрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд┐рд╕реА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рдирд╣реАрдВ рд╣реИред

str.find рдФрд░ str.find рд▓рд┐рдП рд╕рдордп рдХреНрдпреЛрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╕рдордп, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рд╢рдВрд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рдо рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╢рд╛рдпрдж - рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рд╕реНрд╡реИрдк рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдРрд╕реА рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рджреЗрдЦреА рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рдордп рдХреЗ рдЫреЛрдЯреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХреЗ рдмреАрдЪ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИред

рд╡рд┐рдзрд┐ рд╕рдВрдЦреНрдпрд╛ 2: рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдЗрдВрддрдЬрд╝рд╛рд░ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдмрд┐рддрд╛рдП рдЧрдП рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдк рд╕рддреНрд░ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЗ рдХрд╛рд░рдг рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдХрднреА-рдХрднреА DNS рдХреНрд╡реЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдзреАрдореА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдХрднреА-рдХрднреА, рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ, рдХреБрдЫ рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдФрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд╕рдВрдХреЗрддрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдШреЗрд░рдиреЗ рдХреА рдЧрддрд┐ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрд╡рдзрд┐ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдореЗрдВ рдмрд┐рддрд╛рдП рдЧрдП рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреА рд╣реИ:

  1. рд╣рд░ рдмрд╛рд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд░рддреА рд╣реИ рдЬреЛ рддреБрд░рдВрдд рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реЙрдХреЗрдЯ, рдард╣рд░рд╛рд╡, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ, рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ: "рдЬрдм рдореИрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЬрдЧрд╛рдУред" рдпрд╣ рддрдерд╛рдХрдерд┐рдд "рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ" рд╣реИ: рдЬрдм рддрдХ рд╕реЙрдХреЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛, рдпрд╛ рдЬрдм рддрдХ рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддреА, рддрдм рддрдХ рдЕрдиреНрдп рд╕рдорд╛рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  2. "рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛" рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред

рд╣рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд░реЗрдВрдЧреЗред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдРрд╕рд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ psutil рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХреЛ psutil рд╣реИ:

 import psutil _current_process = psutil.Process() def profile_voluntary_switches(f, *args, **kwargs):    prof = cProfile.Profile(        lambda: _current_process.num_ctx_switches().voluntary)    prof.runcall(f, *args, **kwargs)    result = pstats.Stats(prof)    result.sort_stats("time")    result.print_stats() 

рдЕрдм, рдЙрд╕ рдХреЛрдб рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░реЗрдВ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 >>> profile_voluntary_switches( ...   lambda: urlopen("https://pythonspeed.com").read()) ncalls tottime percall filename:lineno(function)     3  7.000  2.333 _ssl._SSLSocket.read     1  2.000  2.000 _ssl._SSLSocket.do_handshake     1  2.000  2.000 _socket.getaddrinfo     1  1.000  1.000 _ssl._SSLContext.set_default_verify_path     1  1.000  1.000 _socket.socket.connect 

рдЕрдм, рд╕рдордп рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реБрдП рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк рдХрднреА-рдХрднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореЗрдореЛрд░реА рдкреЗрдЬ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдкреЗрдЬ рдлрд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдХреЛрдб рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрд╣реБрдд рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд░реВрдкрдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрд╛рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдИ рднреА рдФрд╕рдд рджрд░реНрдЬреЗ рдХрд╛ рд╕рдВрдХреЗрддрдХ рдЦреБрдж рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдзрд╛рд░ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд:

  • psutil.Process().read_count рдХреА рд╕рдВрдЦреНрдпрд╛ ( psutil.Process().read_count ) рдФрд░ рд▓рд┐рдЦрддрд╛ рд╣реИ ( psutil.Process().write_count )ред
  • рд▓рд┐рдирдХреНрд╕ рдкрд░, рдмрд╛рдЗрдЯреНрд╕ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдкрдврд╝реА рдФрд░ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ (psutilред Process().read_chars )ред
  • рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╢рди рдЗрдВрдбрд┐рдХреЗрдЯрд░реНрд╕ (рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ; рдпрд╣ рдЬреЗрдорд╛рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдЖрдЗрдЯрдореЛрдВ рдкрд░ рд╡рд┐рд╡рд░рдг psutil рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреЗ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╣реИрдВ?

Source: https://habr.com/ru/post/hi464133/


All Articles