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

рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд╛рдпрдерди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рд╣рдо рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдореЗрдВ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдЬреЛ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо рдпрд╣рд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ:
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
- рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдЬреЛ рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВред
- рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ?
рдЙрди рдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрд╣рди рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╕реНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ:
- рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиред рдЗрд╕рдореЗрдВ 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 рдХреНрд╡реЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдзреАрдореА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдХрднреА-рдХрднреА, рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ, рдХреБрдЫ рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдФрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд╕рдВрдХреЗрддрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдШреЗрд░рдиреЗ рдХреА рдЧрддрд┐ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрд╡рдзрд┐ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдореЗрдВ рдмрд┐рддрд╛рдП рдЧрдП рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреА рд╣реИ:
- рд╣рд░ рдмрд╛рд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд░рддреА рд╣реИ рдЬреЛ рддреБрд░рдВрдд рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реЙрдХреЗрдЯ, рдард╣рд░рд╛рд╡, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ, рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ: "рдЬрдм рдореИрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЬрдЧрд╛рдУред" рдпрд╣ рддрдерд╛рдХрдерд┐рдд "рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ" рд╣реИ: рдЬрдм рддрдХ рд╕реЙрдХреЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛, рдпрд╛ рдЬрдм рддрдХ рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддреА, рддрдм рддрдХ рдЕрдиреНрдп рд╕рдорд╛рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- "рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛" рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рд╣рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд░реЗрдВрдЧреЗред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдРрд╕рд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ
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 рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреЗ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╣реИрдВ?
