рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрдерди рдХреЛрдб рдХреЛ рдЧрддрд┐ рджреЗрдирд╛

рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдкрд╛рдпрдерди рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреНрдЮрд╛рдд рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдЧрддрд┐ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрдИ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП, рдЬрд┐рдирдореЗрдВ рд╣реИрдмреЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ ред


рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рд╡реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:


рдмреЗрд╢рдХ, рдлреИрд╕рд▓реЗ рд╕рд╣реА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЗрд╕рдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред
рд╕рд╛рдЗрдХреЛ рдПрдХ рдЕрджреНрднреБрдд рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рд╕реИрдХрдбрд╝реЛрдВ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рдХреЛрдб рддреНрд╡рд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди: рдХреЗрд╡рд▓ 32-рдмрд┐рдЯ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг 2.6 рд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЙрдЪреНрдЪ рдореЗрдореЛрд░реА рдЦрдкрдд рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдирд╕ рд╡рд┐рдХрд╛рд╕ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рдЗрдЯ рдкрд░ рдирд╡реАрдирддрдо рдЕрджреНрдпрддрди 16 рдЬреБрд▓рд╛рдИ 2010 рдХреЛ рджрд┐рдирд╛рдВрдХрд┐рдд рд╣реИред рд╢рд╛рдпрдж рд╕рд╛рдЗрдХреЛ рд╡реА 2 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ, рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╣рдореЗрд╢рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдкрд╛рдпрдерди рд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ (рдореИрдВ рд░рд╢рдореИрди рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рд╣рдо рд╕реА рдореЗрдВ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ ) - рдкрд╛рдпрдерди рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдЕрдореВрд▓реНрдп рдЙрдкрд╣рд╛рд░ рджрд┐рдпрд╛ - рдкрд╛рдпрдерди / рд╕реА рдПрдкреАрдЖрдИ, рдЬреЛ рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реА-рдХреЛрдб рдХреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдкрд╛рд░рджрд░реНрд╢реА рдПрдХреАрдХрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред 'рдИред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:
  1. рд╕реА рдФрд░ рдкрд╛рдпрдерди / рд╕реА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП "рдПрдВрдЯреНрд░реА рдереНрд░реЗрд╢реЛрд▓реНрдб" рдЕрднреА рднреА "рдирдВрдЧреЗ" рдкрд╛рдпрдерди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ, рдЬреЛ рд╕реА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдХрд╛рдЯ рджреЗрддрд╛ рд╣реИред
  2. рдкрд╛рдпрдерди рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдЧрддрд┐ рд╣реИред C рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рд┐рдЦрдирд╛ рдкреВрд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП C рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдЗрд╕реЗ рдХрдо рдХрд░рддрд╛ рд╣реИ

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

рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ?

рдлрд┐рд░, рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдкрд╛рдпрдерди рдХреЛ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдмрджрд▓реЗрдВ? рдирд╣реАрдВ, рдЖрдк рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рди рд╕рдХрддреЗред рд╣рдо рдХреЛрдб рдХреЛ рд╣реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВрдЧреЗред рджрд┐рдП рдЧрдП рдЖрдХрд╛рд░ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рдЖрдХрд╛рд░ рдХреЗ рдореИрдВрдбреЗрд▓рдмреНрд░реЛрдЯ рд╕реЗрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
600 * 600 рдкрд┐рдХреНрд╕реЗрд▓, 100 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп 3.07 рд╕реЗрдХрдВрдб рдерд╛, рд╣рдо рдЗрд╕ рдорд╛рди рдХреЛ 100% рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВрдЧреЗ

рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ рдХрд┐ рдХреЛрдб рдХрдо рдкрд╛рдпрдереЛрдирд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдореБрдЭреЗ рдЕрдЬрдЧрд░-рддрд░рд╣ рдХреЗ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреЛ рдорд╛рдл рдХрд░ рджреЗрдВред

рд╕реНрдЯреЗрдк 0. рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╣рдЯрд╛рдирд╛

рдЗрд╕ рдХрджрдо рд╕реЗ рдЕрдЬрдЧрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЕрдиреБрдХреВрд▓рди рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдорд╛рдирд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдХрджрдо рдмрд╣реБрдд рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдирд╕ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдореБрдЦреНрдп рд╢рд░реАрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдкрд╣рд▓реЗ, рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд░рд┐рдХрд▓рд┐рдд рднрд╛рдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
for Y in xrange(height): for X in xrange(width): #   (X,Y)   , itt  

рдлрд┐рд░, рдЗрд╕реЗ рдмрджрд▓рдХрд░:
 def mandelbrot(height, itt, width): for Y in xrange(height): for X in xrange(width): #   (X,Y)   , itt  mandelbrot(height, itt, width) 

рд╣рдореЗрдВ 2.4 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рдорд┐рд▓рд╛, рдЕрд░реНрдерд╛рдд рдореВрд▓ рдХрд╛ 78% ред

рдЪрд░рдг 1. рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ

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

python -m cProfile sample.py
-M рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реНрд╡рд┐рдЪ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рдпрдВ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ "рдкреНрд░реЛрдлрд╛рдЗрд▓" рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдПрдХ рддрд╛рд▓рд┐рдХрд╛, рдХрд╛
4613944 function calls (4613943 primitive calls) in 2.818 seconds

Ordered by: internal time

ncalls tottime percall cumtime percall filename:lineno(function)
1 2.309 2.309 2.766 2.766 mand_slow.py:22(mandelbrot)
...

рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (ncalls рдХреЗ рдЙрдЪреНрдЪрддрдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЗрдВ (рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛), рдЯрд╛рдЗрдордЯрд╛рдЗрдо рдФрд░ рдкрд░реНрдХреЙрд▓ (рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╕рдордп рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐, рдХреНрд░рдорд╢рдГ)ред

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк -s time рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ (рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдПрдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд╛рдереЗ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ):
4613944 function calls (4613943 primitive calls) in 2.818 seconds

Ordered by: internal time

ncalls tottime percall cumtime percall filename:lineno(function)
1 2.309 2.309 2.766 2.766 mand_slow.py:22(mandelbrot)
3533224 0.296 0.000 0.296 0.000 {abs}
360000 0.081 0.000 0.081 0.000 {math.atan2}
360000 0.044 0.000 0.044 0.000 {math.cos}
360000 0.036 0.000 0.036 0.000 {math.sqrt}
...

рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИ, рдЕрдм рд╣рдо рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗред

рдЪрд░рдг 2. рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

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

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

рдЪрд░рдг 3. рдорда

рдЕрдм, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 pix = img.load() #   def mandelbrot(height, itt, width): step_x = (2 - width / 1.29) / (width / 2.6) - (1 - width / 1.29) / (width / 2.6) #    for Y in xrange(height): y = (Y - height / 2) / (width / 2.6) # Y        ,       x = - (width / 1.29) / (width / 2.6) for X in xrange(width): x += step_x z = complex(x, y) phi = math.atan2(y, x - 0.25) p = math.sqrt((x - 0.25) ** 2 + y ** 2) pc = 0.5 - 0.5 * math.cos(phi) if p <= pc: #     -  pix[X, Y] = (255, 255, 255) continue Z_i = 0j for i in xrange(itt): #    " " Z_i = Z_i ** 2 + z if abs(Z_i) > 2: color = (i * 255) // itt pix[X, Y] = (color, color, color) break else: pix[X, Y] = (255, 255, 255) print("\r%d/%d" % (Y, height)), 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдШрд╛рддрд╛рдВрдХ рдСрдкрд░реЗрдЯрд░ ** рдХрд╛рдлреА "рд╕рд╛рдорд╛рдиреНрдп" рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдШрд╛рддрд╛рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдкреНрд░рдкрддреНрд░ x ** 2 рдХреЗ рд╕рднреА рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ x * x рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рд╕рдордп рдкрд░ рджреЗрдЦреЗрдВ:
1.9 рд╕реЗрдХрдВрдб , рдпрд╛ рдореВрд▓ рд╕рдордп рдХрд╛ 62% , рдХреЗрд╡рд▓ рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЬрдЧрд╣ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 p = math.sqrt((x - 0.25) ** 2 + y ** 2) ... Z_i = Z_i **2 + z 

рдкрд░:
 p = math.sqrt((x - 0.25) * (x - 0.25) + y * y) ... Z_i = Z_i * Z_i + z 


рдЪрд░рдг 5, 6 рдФрд░ 7. рдЫреЛрдЯреЗ рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг

рд╕рднреА рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕рддреНрдп рдкрддрд╛ рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдЪрд░ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рднреА рд╕рдЪ рд╣реИ, рдЕрдХреНрд╕рд░ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдЧрдгрд┐рдд рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рддреЛ рдХреНрдпреЛрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╣реА рдЖрдпрд╛рдд рди рдХрд░реЗрдВ? рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд:
 def mandelbrot(height, itt, width): from math import atan2, cos, sqrt pix = img.load() #   

рдПрдХ рдФрд░ 0.1 рд╕реЗрдХрдВрдбред
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдмреНрд╕ (x) рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлреНрд▓реЛрдЯ рд▓реМрдЯрд╛рдПрдЧрд╛ред рддреЛ рдпрд╣ рдлреНрд▓реЛрдЯ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдФрд░ рдЗрдВрдЯ рдирд╣реАрдВ:
 if abs(Z_i) > 2: ------> if abs(Z_i) > 2.0: 

рдПрдХ рдФрд░ 0.15 рд╕реЗрдХреЗрдВрдбред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдордп рдХрд╛ 53% ред

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

рдирд┐рд╖реНрдХрд░реНрд╖

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

рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрдкрдХреА рд░рд╛рдп рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА!

рдпреВрдкреАрдбреА рдХрд╡рдХ рджреНрд╡рд╛рд░рд╛ рдЙрджреНрдзреГрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ ред

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


All Articles