рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рдкрд╛рдпрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкрд╛рдпрдерди рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди CPython ( python.org ) рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (GIL) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╛рдд рдЖрдкрдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрд╛рдпрдерди рд╕реНрдЯреНрд░реАрдо рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ - рдмрд╛рдХреА рдХреЛ рдЬреАрдЖрдИрдПрд▓ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреБрд▓рд╛рдм рдХреЗ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддреЗ рд╣реБрдП, рд╣рдмреЗрд░рд╛ рдкрд░ рдПрдХ рддреЗрдЬрддрд░реНрд░рд╛рд░ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛: рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рд╕рдмрдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдмрдирд╛рдПрдВ, рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рднреА рдЙрдк-рд╡реНрдпрд╛рдЦреНрдпрд╛рддрд╛рдУрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╛рдиреА рдЬреАрдЖрдИрдПрд▓, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдЪрд╛рд░ рддрд╛рдЬрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рд╣реИ - рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...

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

рдЬреАрдЖрдИрдПрд▓


рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЙрди GIL рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдкрд╛рдпрдерди 3.2+ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ (рд╡рд┐рд╖рдп рдХреА рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд╕реНрддреБрддрд┐ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ )ред

рд╕рдВрд╕реНрдХрд░рдг 3.2 рдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдФрд░ рдХрдореА рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред 1.x рдФрд░ 2.x рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдкрд╛рдпрдерди рд╕реА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рднреА рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦреЗ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИ)ред

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

рдХреНрдпреЛрдВ рдЙрдк-рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрд╛рд░ рдорджрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ


рдПрдХ Qualab рд╕рд╣рдпреЛрдЧреА рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдЙрд╕рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ gist.github.com/4680136 рдкрд░ gist.github.com/4680136 рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб рджреЛрд╣рд░рд╛рдпрд╛ рд╣реИ)

рдореБрдЦреНрдп рд╕реВрддреНрд░ рдореЗрдВ, GIL рдХреЛ рддреБрд░рдВрдд PyEval_SaveThread () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рдЕрдм рдЕрдЬрдЧрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдХрдИ рд╢реНрд░рдорд┐рдХ рдзрд╛рдЧреЗ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рд╡рд░реНрдХрдлрд╝реНрд▓реЛ GIL рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИ ред рдХреЛрдб рдЕрдЬреАрдм рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдореБрдЦреНрдп рдмрд╛рдд - GIL рд╣рдорд╛рд░реА рдореБрдЯреНрдареА рдореЗрдВ рдмрдВрдж рд╣реИред

рдФрд░ рддреБрд░рдВрдд, рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдиреБрдХреНрд░рдорд┐рдХ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЙрдк-рд╡реНрдпрд╛рдЦреНрдпрд╛рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрдорд╛рдг рди рдХрд┐рдпрд╛ рдЬрд╛рдП - рд╣рдорд╛рд░реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдирдХреА рднрд╛рд╡рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╢реВрдиреНрдп рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрдЦрдХ рдиреЗ рддреБрд░рдВрдд рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рджрд┐рдпрд╛ред рдФрд░ рдлрд┐рд░ рд╡рд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдпрдо рд░рд╣реЗ, рдХрд╛рд▓реЗ рдЧреЛрд░реЗ рдХреЛ рдмреБрд▓рд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рдереЗред

рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рд▓реМрдЯрдирд╛ рд╕рд░рд▓ рд╣реИ - рдЖрдкрдХреЛ рдЬреАрдЖрдИрдПрд▓ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддрдм рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

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

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


рдореБрдЭреЗ рдЬреАрдЖрдИрдПрд▓ рдкрд╕рдВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ - рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдФрд░ рдореИрдВ рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред

  1. рдпрд╛ рдЬреАрдЖрдИрдПрд▓ рдХреЛ рдкрдХрдбрд╝реЛ рдФрд░ рдкрд╛рдпрдерди рд╕реА рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
  2. рдпрд╛ рдЙрд╕реЗ рдЬрд╛рдиреЗ рджреЗрдВ рдФрд░ рд╡рд╣реА рдХрд░реЗрдВ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рд╡рд┐рдзрд╛ рдореЗрдВ рдкрд╛рдпрдерди рдХреЛ рдирд╣реАрдВ рдЫреВ рд╕рдХрддреЗред
  3. рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рд╛рде рд▓реЙрдиреНрдЪ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред


рдирд┐рдпрдо рд╕рд░рд▓ рд╣реИрдВ, рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдФрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдирд╣реАрдВ рд╣реИрдВред

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


All Articles