рдЕрдЬрдЧрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛

рдкреНрд░реЛрдлрд╛рдЗрд▓ рдФрд░ рд▓рд┐рдВрдХ рдкрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг:

  1. рдкреНрд░рджрд░реНрд╢рди: рд╣реЙрдЯрд╢реЙрдЯ рдпрд╛ рдЕрдЬрдЧрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓ / cProfile + kcachegrind рд▓реЙрдЧ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ ( рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯ рд╣реИ , WinCacheGrind рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ)
  2. рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ: рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рдбреЙрдЬрд░




рдЙрддреНрдкрд╛рджрдХрддрд╛



  1. рдЖрдБрдХрдбрд╝реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рдПрдХрддреНрд░ рдХрд░реЗрдВ:



    • рдЙрджрд╛рд╣рд░рдг 1 рдПрдХ рддреНрд╡рд░рд┐рдд рд╣реЙрдЯрд╢реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдЬреЛ рдкрджрд╛рд╡рдирдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ):

       import hotshot prof = hotshot.Profile("your_project.prof") prof.start() # your code goes here prof.stop() prof.close()
            
            









      kcachegrind- рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ :

       hotshot2calltree your_project.prof > your_project.out
            
            









    • рдЙрджрд╛рд╣рд░рдг 2 рдорд╛рдирдХ рдкреНрд░реЛрдлрд╛рдЗрд▓ / cProfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:

       python -m cProfile -o your_project.pyprof your_project.py
            
            





      pyprof2calltree рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ:

       pyprof2calltree -i your_project.pyprof -o your_project.out
            
            





      (-k рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рдпрд╣ рддреБрд░рдВрдд kcachegrind рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)





  2. kcachegrind рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдореЗрдВ рд▓реЙрдЧ рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ





рдЬрдм рдореИрдВрдиреЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЖрдпрд╛рдд рдХреЛ рдкрдХрдбрд╝рд╛ рддреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдореБрдЭреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП Django рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рддрдм рдореИрдВрдиреЗ mod_python рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдЕрдм рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рддрд░реАрдХреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рднреА рдмрд╣реБрдд рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдП (рдмрд╛рдж рд╡рд╛рд▓реЗ рдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛)ред







рд╕реНрдореГрддрд┐



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



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



  1. рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдПрдВ, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЪреЗрд░реА 3 рдПрдкреНрд▓рд┐рдХреЗрд╢рди:

     # memdebug.py import cherrypy import dowser def start(port): cherrypy.tree.mount(dowser.Root()) cherrypy.config.update({ 'environment': 'embedded', 'server.socket_port': port }) cherrypy.engine.start()
          
          





  2. рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:

     import memdebug memdebug.start(8080) # your code goes here
          
          





  3. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЖрдВрдХрдбрд╝реЗ рджреЗрдЦреЗрдВ (рдЪреЗрд░реАрдкреА рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ, рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп - рд╣рдо рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)

      http://localhost:8080/
          
          











    рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдкрд╕реНрд╡реА рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдордЭрд╛рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдбрд┐рдмрдЧрд░ API рдХреЛ рд╕реАрдЦрдиреЗ рдФрд░ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ, "рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ рджрд┐рдЦрд╛рдПрдБ" рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдкрд░, рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рд╡рд┐рд╢рд╛рд▓ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
  4. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕реАрдЦрдиреЗ рдХреЗ рдмрд╛рдж, Ctrl + Z рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рдорд╛рд░ рдбрд╛рд▓реЗрдВ


рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЗ рдФрд░ рдЙрдкрдХрд░рдг рдЕрднреА рднреА рдЬрд╛рдирдиреЗ рд▓рд╛рдпрдХ рд╣реИрдВ?



All Articles