рдЕрдзреНрдпрд╛рдп 13 рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╕рдВрдЧрддрд┐
'рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ' рдкреБрд╕реНрддрдХ рд╕реЗ,
рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг
рдорд┐рд╢реИрд▓ рдЬреЙрд░реНрд╕реНрдХреА рдФрд░ рддрд╛рд░реЗрдХ рдЬрд╝рд┐рдЖрджреЗ, 2016
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдиреЗ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИред рдкрд╛рдпрдерди 3.5 рдХреЛ рдЕрдВрдд рдореЗрдВ рдХреБрдЫ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдорд┐рд▓реЗ рдЬреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 3.5 рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╛рдпрдерди 2 рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдП рдереЗред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдЯреЗрдХрд▓реЗрд╕ (рдЕрдзреНрдпрд╛рдп 1, "рдкрд╛рдпрдерди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐") рдирд╛рдордХ рдкрд╛рдпрдерди рдХрд╛ рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рд╣реИ, рдЬреЛ рдЗрд╕ рдПрдХрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐
рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб, рдЯреЛрд░реНрдиреЗрдбреЛ рдпрд╛
рдИрд╡реЗрдВрдЯрд▓реЗрдЯ , рд╕рдХреНрд░рд┐рдп рд╕рдореБрджрд╛рдп рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирдиреЗ рд▓рд╛рдпрдХ рд╣реИрдВред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╛рдпрдерди 3.5 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреБрд░рд╛рдиреЗ рд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗ, рдпрд╛ рдмрд╛рд╣рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрд╛рдпрдерди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд░реВрдкрд░реЗрдЦрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреАред
рдЬрдм рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рдорд╛рди рд╣реА рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рдмрд┐рдирд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рдВрджрд░реНрдн рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЕрдиреБрд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВред
рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╛рдзрд╛рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдореЛрдВ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:
- рдЧреНрд░реАрди рдереНрд░реЗрдбреНрд╕ - рдЧреНрд░реАрди рдереНрд░реЗрдбреНрд╕ (рдЧреНрд░реАрдирд▓реЗрдЯ, рдЬреЗрдВрдЯреЗрди рдпрд╛ рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕)
- рдХреЛрд░рдЖрдЙрдЯреНрд╕ - рдХреЛрд░рдЖрдЙрдЯ (рдкрд╛рдпрдерди 3.5 рдореЗрдВ рд╢реБрджреНрдз рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ)
- рдЯрд╛рд╕реНрдХрд▓реЗрдЯреНрд╕ (рд╕реНрдЯреИрдХрд▓реЗрд╕ рдкрд╛рдпрдерди) рдпреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЦрдВрдб рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдХреЛрд░рд╛рдЙрдЯрд╛рдЗрдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╢реБрд░реВ рдореЗрдВ рдкрд╛рдпрдерди рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 3.5 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рд╕рд╣рдпреЛрдЧреА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ I / O
рд╕рд╣рдпреЛрдЧреА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдореВрд▓ рд╣реИред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ (рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдереНрд░реЗрдб) рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рд░реА рдХрд░рддреА рд╣реИ рдЬрдм рдпрд╣ рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдПрдХ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдореЛрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реАрд▓рд┐рдП рдЗрд╕реЗ рд╕рд╣рдпреЛрдЧреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдореЙрдбрд▓ рдХрднреА-рдХрднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо-рд╕реНрддрд░реАрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЬреЛрдЦрд┐рдо рд╣реИ рдХрд┐ рдПрдХ рдЦрд░рд╛рдм рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╕реЗрд╡рд╛ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░ рд╕рдХрддреА рд╣реИред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдереНрд░реЗрдбреНрд╕ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рд╣рдпреЛрдЧреА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдЕрднреА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрддрд░ рдкрд░ рдПрдХ рдорд╣рд╛рди рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдЙрдкрдХрд░рдг рд╣реИред
рдЖрд╡реЗрджрди рд╕реНрддрд░ рдкрд░ рд╕рдВрдпреБрдХреНрдд рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЙрди рдереНрд░реЗрдбреНрд╕ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯ рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдирд┐рд╖реНрдкрд╛рджрди рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдХрд╛рд░реНрдп (рдХреЙрд░рдЖрдЙрдЯ, рдЯрд╛рд╕реНрдХрд▓реЗрдЯреНрд╕ рдФрд░ рдЧреНрд░реАрди рдереНрд░реЗрдбреНрд╕) рд╣реИрдВ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдордиреНрд╡рдп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рд╣реЛрддрд╛ рд╣реИред
рднреНрд░рдо (рдкрд╛рдЗрдерди рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рдХрд╛рд░рдг) рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдм рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЛрд░рдЯрд╛рдЗрди рдХрд╣реЗрдВрдЧреЗред рд╕рд╣рдпреЛрдЧреА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, I / O рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рд╢реЗрдбреНрдпреВрд▓рд░ рдпрд╛ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдпрд╛ рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрдИ / рдУ рдСрдкрд░реЗрд╢рди рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╡рд┐рд▓рдВрдмрддрд╛ рдПрдХ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдореБрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд╕рд░ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рдХреЛрд░рдЯрд╛рдЗрди рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬреАрдЖрдИрдПрд▓ рдкрд╛рдпрдерди рдереНрд░реЗрдбреНрд╕ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рд░ I / O рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдореБрдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рд╕реНрдЯрдо-рд╕реНрддрд░реАрдп рдереНрд░реЗрдбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рднреА рд╕рдордп рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдереНрд░реЗрдб рдХреЛ рдЕрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдореБрдЦреНрдп рдИрд╡реЗрдВрдЯ рд▓реВрдк рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрднреА рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рдЧреИрд░-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╣рдореЗрд╢рд╛ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рд╣рдорд╛рд░рд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рдкрд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╢реЗрдбреНрдпреВрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЗрд╕реЗ рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреЙрд░рдЖрдЙрдЯ рдХреЛ рдЧреИрд░-рднреАрдбрд╝ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╛рдпрдерди async рдФрд░ рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдФрд░
рд╡реЗрдЗрдЯ рдХреЗ рдХреАрд╡рд░реНрдб рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдореБрдЦреНрдп рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рд╣реИрдВред
рдбрд┐рдлрд╛рдЗрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП
async рдХреАрд╡рд░реНрдб рдПрдХ рдирдП coroutine рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ coroutine рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рд▓рдВрдмрд┐рдд рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ (рджреЗрдЦреЗрдВ рдЕрдзреНрдпрд╛рдп 2, "рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ," рд╡рд░реНрдЧ рд╕реНрддрд░ рд╕реЗ рдиреАрдЪреЗ)ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдирд░реЗрдЯрд░ рдХреЛ рдХреЙрд░рдЯрд╛рдЗрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рд╣реИ рдЬреЛ
async рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
async def async_hello(): print("hello, world!")
Async рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖ рд╣реИрдВред рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЕрдВрджрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ coroutine рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ:
>>>> async def async_hello(): ... print("hello, world!") ... >>> async_hello() <coroutine object async_hello at 0x1014129e8>
рдХреЛрд░рдЯрд╛рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рддрдм рддрдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрд╕рд┐рдВрд╕реАрдУ рдореЙрдбреНрдпреВрд▓ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХрд╛ рдПрдХ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╕рд╛рде рд╣реА рдХрдИ рдЕрдиреНрдп рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ:
>>> import asyncio >>> async def async_hello(): ... print("hello, world!") ... >>> loop = asyncio.get_event_loop() >>> loop.run_until_complete(async_hello()) hello, world! >>> loop.close()
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рд▓ рдХреЙрд░рдЖрдЙрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рд╕рдорд╛рдирддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рдирд╛рдВрддрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдИрд╡реЗрдВрдЯ рд▓реВрдк рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
loop.create_task () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдпрд╛
asyncio.wait () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рджрд╛рди рдХрд░рдХреЗред рд╣рдо рдмрд╛рдж рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░
рд░реЗрдВрдЬ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:
import asyncio async def print_number(number): print(number) if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete( asyncio.wait([ print_number(number) for number in range(10) ]) ) loop.close()
Asyncio.wait () рдлрд╝рдВрдХреНрд╢рди
рдХреЛрд░рдЯрд╛рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреБрд░рдВрдд рд▓реМрдЯрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЬрдирд░реЗрдЯрд░ рд╣реИ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ (рд╡рд╛рдпрджрд╛) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЛрд░рдЖрдЙрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд░рдЯреАрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рдпрдерди рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд▓рд┐рдкрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
$ python asyncprint.py 0 7 8 3 9 4 1 5 2 6
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рдЫрдкреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдЕрдкрдиреА рдХреЛрд░рдЯрд╛рдЗрдиреНрд╕ рдмрдирд╛рдИ рдереАрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред
рдкрд╛рдпрдерди 3.5 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рджреВрд╕рд░рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреАрд╡рд░реНрдб
рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╣реИ ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрд░рдЖрдЙрдЯ рдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреА рдШрдЯрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмрд╛рдж рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рджреЛ рдХреЛрд░рдЯрд╛рдЗрдиреНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд▓реВрдк рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ:
- рд╕реЗрдХрдВрдб рдХреЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
- рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдП рдЧрдП рдХреБрдЫ рдкрд╛рда рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ, рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдмрд┐рддрд╛рдП рд╕рдордп рдХреА рдорд╛рддреНрд░рд╛ред рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╕рдорд╕рд╛рдордпрд┐рдХ рдореБрджреНрджреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╕реБрдзрд╛рд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:
import time import random import asyncio async def waiter(name): for _ in range(4): time_to_sleep = random.randint(1, 3) / 4 time.sleep(time_to_sleep) print( "{} waited {} seconds" "".format(name, time_to_sleep) ) async def main(): await asyncio.wait([waiter("foo"), waiter("bar")]) if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(main()) loop.close()
рдЬрдм рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
$ time python corowait.py bar waited 0.25 seconds bar waited 0.25 seconds bar waited 0.5 seconds bar waited 0.5 seconds foo waited 0.75 seconds foo waited 0.75 seconds foo waited 0.25 seconds foo waited 0.25 seconds real 0m3.734s user 0m0.153s sys 0m0.028s
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдХреЛрд░рдЯрд╛рдЗрди рдиреЗ рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдирд╣реАрдВред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ
time.sleep () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдИрд╡реЗрдВрдЯ рд▓реВрдк рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдореЗрдВ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддреЛ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЗрд╕рдХрд╛ рдЙрддреНрддрд░
asyncio.sleep () рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рдирд╛ рд╣реИ , рдЬреЛ
time.sleep () рдХрд╛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдФрд░
рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА
рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдореБрдЦреНрдп () рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕ рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдерд╛ред рдЗрд╕рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдзрд┐рдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ред рдЖрдЗрдП
рд╡реЗрдЯрд░ рдХреЗ рд╕реБрдзрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ
() coroutine рдЬреЛ рд╡реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ asyncio.sleep ():
async def waiter(name): for _ in range(4): time_to_sleep = random.randint(1, 3) / 4 await asyncio.sleep(time_to_sleep) print( "{} waited {} seconds" "".format(name, time_to_sleep) )
рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдкрд░, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рджреЛ рдлрдВрдХреНрд╢рдиреНрд╕ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ:
$ time python corowait_improved.py bar waited 0.25 seconds foo waited 0.25 seconds bar waited 0.25 seconds foo waited 0.5 seconds foo waited 0.25 seconds bar waited 0.75 seconds foo waited 0.25 seconds bar waited 0.5 seconds real 0m1.953s user 0m0.149s sys 0m0.026s
рдЗрд╕ рд╕рд░рд▓ рд╕реБрдзрд╛рд░ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдХреБрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рд╕рднреА рдиреАрдВрдж рдХреЗ рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрд░рдЯрд╛рдЗрди рдиреЗ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд▓рд┐рдпрд╛ред
рдкрд╛рдпрдерди рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдПрд╕рд┐рдВрд╕реАрдУ
Asyncio рдореЙрдбреНрдпреВрд▓ Python 3.4 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рддреЛ рдпрд╣ рдкрд╛рдпрдерди рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдкрд╛рдпрдерди 3.5 рд╕реЗ рдкрд╣рд▓реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рджреЛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЧрддрддрд╛ рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рд╡реИрд╕реЗ рднреА, рдкрд╛рдпрдерди рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛрд░ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреЗрд░ рд╕реЗ рдХрднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдИ рдЬрд╣рд╛рдВ рдХреЛрд░рдЯрд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИрдВред
рдкрд╛рдпрдерди 3.5 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЖрдк
рдПрд╕рд┐рдВрдХреНрд╕ рдФрд░
рд╡реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
async def main (): await asyncio.sleep(0)
рд╣рд╛рд▓рд╛рдБрдХрд┐, Python 3.4 рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ asyncio.coroutine рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ coroutine рдкрд╛рда рдореЗрдВ рдЙрдкрдЬ рджреЗрдирд╛ рд╣реЛрдЧрд╛:
@asyncio.couroutine def main(): yield from asyncio.sleep(0)
рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐
рдмрдпрд╛рди рд╕реЗ рдЙрдкрдЬ 3.3 рдкрд╛рдпрдерди рдореЗрдВ рдкреЗрд╢ рдХреА рдЧрдИ рдереА, рдФрд░ PyPI рдореЗрдВ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмреИрдХрдкреЛрд░реНрдЯ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдкрд╛рдпрдерди 3.3 рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧреА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг
рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ I / O рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдореБрджреНрд░рдг рдЕрдиреБрдХреНрд░рдо рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд╕реНрдерд┐рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдорджрдж рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣реНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рддрд░рд╣ рд╣реА
рдЕрдЬрдЧрд░-рдЧреИрдореИрдк рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЕрдЬрдЧрд░-рдЧрдордк рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдереЛрдбрд╝реЗ рдЖрд▓рд╕реА рдереЗ рдФрд░ рдХреЗрд╡рд▓ рдирд╛рдо рд▓реЗрддреЗ рдереЗред рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреИрдХреЗрдЬ рдЪреБрдирд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдиреБрд░реЛрдз рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ I / O рдХреЛ
async рдФрд░
рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрд╡реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рдирддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдпрд╛ рддреЛ
рдЬреАрд╡реЗрдВрдЯ (
grequests ,
https://github.com/ kennethreitz / grequests рджреЗрдЦреЗрдВ ) рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ рдпрд╛ рдПрдХ рдереНрд░реЗрдб / рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд▓ (рдХреНрд╡реЗрд░реА-рд╡рд╛рдпрджрд╛) рдЪрд▓рд╛рддреЗ рд╣реИрдВ
github.com/ross/requests-futures ) рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдирд┐рд░реНрджреЛрд╖ рдУрдкрди рд╕реЛрд░реНрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдбрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдлрдЯрдХрд╛рд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╢рд╛рдВрдд рд╣реЛ рдЬрд╛рдУред рдЕрдЬрдЧрд░-gmaps рдкреИрдХреЗрдЬ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡реНрдпрдХреНрддрд┐ рдореИрдВ рд╣реВрдВред рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдПрдХ рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЦреБрдж рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдХрдбрд╝рд╡рд╛ рд╕рдмрдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдЬрдЧрд░-gmaps (рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп 0.3.1) рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдЬрдЧрд░ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛрдпрд╛ рд╣реИред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдЬрд╛рдирдирд╛, рдЬреЛ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛, рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░ рджреЗред Google MapsAPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЪрд┐рддреНрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдХреЛрдбрд╝рд╛ рдорд╛рд░ рджреЗрдВрдЧреЗред рдкрд╛рдпрдерди 3.5 рдХреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ рдЬреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ
urllib.urlopen () рдХрд╣рддреЗ рд╣реБрдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЦрд░реЛрдВрдЪ рд╕реЗ рдкреВрд░реНрдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо
PyPI рдореЗрдВ рдЙрдкрд▓рдмреНрдз
aiohttp рдкреИрдХреЗрдЬ рд╕реЗ рдереЛрдбрд╝реА рдорджрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ HTTP рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣рд╛рдБ
aiohttp рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдПрдХ
рдЬрд┐рдпреЛрдХреЛрдб () рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ Google рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:
import aiohttp session = aiohttp.ClientSession() async def geocode(place): params = { 'sensor': 'false', 'address': place } async with session.get( 'https://maps.googleapis.com/maps/api/geocode/json', params=params ) as response: result = await response.json() return result['results']
рдорд╛рди
рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЛрдб
asyncgmaps рдирд╛рдо рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЕрдм рд╣рдо рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдкрд╣рд▓реЗ, рд╣рдо рдкреВрд░реЗ рдСрдкрд░реЗрд╢рди рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рддреЗ рдереЗ:
- Fetch_place () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВред
- Present_result () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реВрдк рдореЗрдВ рд╕рднреА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред
рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╕рд╣рдпреЛрдЧреА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдпрд╛ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐ рдЖрдЗрдЯрдо рдПрдХ рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЙрдард╛рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЗ рдЕрдм рд╣рдорд╛рд░реА рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИрдВред
Coroutines рдкреНрд░реАрдореЗрдкреНрдЯрд┐рд╡ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо HTTP рдкреНрд░рддрд┐рд╕рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдПрдЧрд╛:
import asyncio
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдмреИрдХреЗрдВрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рджреБрдЦрдж рд╣реИред рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдХреЗрдЬ рдЬреЛ I / O рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИрдВ:
- рдЕрднреА рднреА рдкрд╛рдпрдерди 3 рдХрд╛ рдХрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЗрд╕рдХреА рдХреБрдЫ рдЙрдиреНрдирдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ
- рдкрд╛рдпрдерди рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рдХрдо рд╕рдордЭ
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрд╣реБрдд рдмрд╛рд░ рдореМрдЬреВрджрд╛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкреНрд░рд╡рд╛рд╕ рдпрд╛ рддреЛ рдЕрд╕рдВрднрд╡ рд╣реИ (рд╡рд╛рд╕реНрддреБ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг) рдпрд╛ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рд╢реИрд▓реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрд╣реБрдд рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рдЕрдВрддрддрдГ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрднреА рдЖрдкрдХреЛ рд╢реБрд░реВ рд╕реЗ рд╣реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓реЗрдВ рд╣реЛрдВрдЧреАред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ "рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг" рдЦрдВрдб рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ - рдЕрд╕рдВрдЧрдд рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЖрдИ / рдУ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЧреИрд░-рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрд╡рд░реЛрдзрдиред рдмреЗрд╢рдХ, рдХрднреА-рдХрднреА рдЖрдк рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдРрд╕реА рдЕрд╕рдВрдЧрддрд┐ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХреЛ рднреА рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдВрдд рдореЗрдВ, рд╕рд┐рдВрдХреНрд░реЛрдирд╕ I / O рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рдХрд╛ рд╕рдВрдпреЛрдЬрди рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рд╕рднреА рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЗрд▓ рд╣реИред
рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреНрд░реЛрд╕реЗрд╕рд░-рдмрд╛рдЙрдВрдб рдСрдкрд░реЗрд╢рди рд╣реИред рдЬрдм рдЖрдк рдПрдХ I / O рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ coroutine рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рд╕реЙрдХреЗрдЯ рд╕реЗ рд▓рд┐рдЦрддреЗ / рдкрдврд╝рддреЗ рд╕рдордп, рдЖрдк рдЕрдВрддрддрдГ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдХреЙрд▓ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛? рдмреЗрд╢рдХ, рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХрд╛рдо рдХреЛ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рддреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрд▓реНрдж рд╣реА рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдореЙрдбрд▓ рдирд╣реАрдВ рд╣реИред рдРрд╕реА рдЪреАрдЬ рдХреЛрдб рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рднреА рдирд╣реАрдВ рджреЗрддреА рд╣реИред
рдЯреЗрдореНрдкреЛрд░рд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреБрднрд╛рд╖рд┐рдпрд╛ рдпрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлреНрдпреВрдЪрд░реНрд╕ рдХреЗ рд╕рд╛рде рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХрд╛ рд╕рдВрдпреЛрдЬрди
рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рд╣реИ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреБрдЫ рднрд╛рд░реА рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ? рдЦреИрд░ ... рдЖрдкрдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдпрд╛ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧред
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╡рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рджреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╣рдореЗрд╢рд╛ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ I / O рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ (рдЬрд▓реНрджреА рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛) рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧрд░ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рджреЗрдЦрднрд╛рд▓ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПред
рдЗрд╕рд▓рд┐рдП, рдХрднреА-рдХрднреА рдЬрдм рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЪреАрдЬ рдЖрдкрдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдПрдХ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд░рдЦрддрд╛ рд╣реИред рдЖрдк рдпрд╣ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдХреЛрд░рдЖрдЙрдЯ рд╣реИ, рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рд░реА рдХрд░реЗрдВ, рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЬрдм рд╡реЗ рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп
рд╕рдорд╡рд░реНрддреА.рдлреБрдЯреНрд╕ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ
рдПрд╕рд┐рдВрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рднреА рдПрдХреАрдХреГрдд рд╣реИред рд╕рд╛рде рдореЗрдВ, рдпреЗ рджреЛ рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдереНрд░реЗрдбреНрд╕ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдХреЛрд░рдЖрдЙрдЯреНрд╕ рдереЗред
рдирд┐рд╖реНрдкрд╛рджрдирдХрд░реНрддрд╛ рдФрд░ рд╡рд╛рдпрджрд╛
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдирд╛ рд▓реВрдк рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджреЗрдЦреЗрдВ, рд╣рдо
рд╕рдорд╡рд░реНрддреА.рдлреБрдЯрд░реНрд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╛рдж рдореЗрдВ рд╣рдорд╛рд░реЗ рддрдерд╛рдХрдерд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдореБрдЦреНрдп рдШрдЯрдХ рдмрди рдЬрд╛рдПрдЧрд╛ред
рд╕рдорд╡рд░реНрддреА.рдлреБрдЯрд░реНрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдХреНрд╖рд╛рдПрдВ
рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░ рдФрд░
рдлреНрдпреВрдЪрд░ рд╣реИрдВ ред
рдПрдХреНрдЬрд╝рд┐рдХреНрдпреВрдЯрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рдкреВрд▓ рд╣реИ рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореЙрдбреНрдпреВрд▓ -
рдкреВрд▓ рдФрд░
рдбрдореА.рдкреВрд▓ - рд╕реЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдмрд╣реБрдд рд╕рдорд╛рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рд╣реИред рдпрд╣ рдПрдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ:
- ThreadPoolExecutor : рдЬреЛ рдереНрд░реЗрдб рдкреВрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ
- ProcessPoolExecutor : рдЬреЛ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ
рдирд┐рд╖реНрдкрд╛рджрдХ рддреАрди рддрд░реАрдХреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ:
- рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ (fn, * args, ** kwargs) : рд╕рдВрд╕рд╛рдзрди рдкреВрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП fn рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдлреНрдпреВрдЪрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд░рд┐рдЯрд░реНрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
- рдирдХреНрд╢рд╛ (func, * iterables, timeout = рдХреЛрдИ рдирд╣реАрдВ, chunksize = 1) : func рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рдорд╛рди рдкреБрдирд░рд╛рд╡реГрддрд┐ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд▓.рдореИрдк () рд╡рд┐рдзрд┐
- рд╢рдЯрдбрд╛рдЙрди (рдкреНрд░рддреАрдХреНрд╖рд╛ = рд╕рддреНрдп) : рдпрд╣ рдПрдХреНрдЬрд╝реЗрдХреНрдпреВрдЯрд░ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХрд╛ рднрд╡рд┐рд╖реНрдп рдХреА рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░рдг
рдЬрдорд╛ () рд╣реИ рдЬреЛ рдЗрд╕реЗ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЙрд▓ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЗрд╖рдг рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рд┐рдЯрд░реНрди рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
Future.result () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЕрдЧрд░ рддрдерд╛рдХрдерд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ
рдкрд░рд┐рдгрд╛рдо () рд╡рд┐рдзрд┐ рдЗрд╕реЗ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░реЗрдЧреА рдФрд░ рдмрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧреАред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рддрдХ рдЗрд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред рдЗрд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╡рд╛рджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪреЗрдВ (рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╛рджреЗ рдХреЗ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ)ред рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЗрд╕реЗ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (
рдкрд░рд┐рдгрд╛рдо () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрддрдГ рдХреБрдЫ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ:
>>> def loudy_return(): ... print("processing") ... return 42 ... >>> from concurrent.futures import ThreadPoolExecutor >>> with ThreadPoolExecutor(1) as executor: ... future = executor.submit(loudy_return) ... processing >>> future <Future at 0x33cbf98 state=finished returned int> >>> future.result() 42
рдпрджрд┐ рдЖрдк
Executor.map () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ
рдкреВрд▓ рд╡рд░реНрдЧ рдХреЗ
рдкреВрд▓.рдореИрдк () рд╡рд┐рдзрд┐ рд╕реЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реИ:
def main(): with ThreadPoolExecutor(POOL_SIZE) as pool: results = pool.map(fetch_place, PLACES) for result in results: present_result(result)
рдИрд╡реЗрдВрдЯ рд▓реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
Executor.submit () рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЛрд░рдЖрдЙрдЯ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд╣рдпреЛрдЧрд╛рддреНрдордХ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдФрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдпрд╛ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдореВрд▓
рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреНрд▓рд╛рд╕ рдХрд╛
рдмреЗрд╕рдЗрд╡реЗрдВрдЯреЗрд▓реЛрдк.рд░реБрди_рдЗрди_рдПрдХреНрд╕рдкреНрд▓рд┐рдХреЙрд░ (рдирд┐рд╖реНрдкрд╛рджрдХ, рдлрдВрдХ, * рдЖрд░реНрдЧреНрд╕) рд╡рд┐рдзрд┐ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрдХ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдереНрд░реЗрдб рдкреВрд▓ рдореЗрдВ рдлрдВрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдирдИ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡рд╕реНрддреБ (рд╡рд╣ рд╡рд╕реНрддреБ рдЬрд┐рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ) рдХреЛ рд▓реМрдЯрд╛ рджреЗрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдПрдХ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдПрдХ рдХреЛрд░рдЯрд╛рдЗрди рдХреА рддрд░рд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЪрд╛рд╣реЗ рдХрд┐рддрдирд╛ рднреА рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧреЗред рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрд▓ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреВрд░рд╛ рдЪрдХреНрд░ рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ред
рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧреА рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрдХ рдХрд╛ рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк
рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рд╕реА рдХреЛ
рднреА рдкрд╛рд╕
рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
рдереНрд░реЗрдбрдкреВрд▓ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдереНрд░реЗрдбреНрд╕ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдЦреНрдпрд╛ (рдкрд╛рдпрдерди 3.5 рдХреЗ рд▓рд┐рдП, рдпрд╣ 5 рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИ) рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рддреЛ, рдЪрд▓рд┐рдП рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЕрдЬрдЧрд░-рдЧреИрдореИрдк рдкреИрдХреЗрдЬ рдХреЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдереЗ рдЬреЛ рдХрд┐ рдЖрдкрдХреЗ рд╕рд┐рд░рджрд░реНрдж рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рдерд╛ред рд╣рдо рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЙрд░рдЯреАрди рдХреЗ рд░реВрдк рдореЗрдВ fetch_place () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╣реБрдП, рд▓реВрдк.run_in_executor () рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред
async def fetch_place(place): coro = loop.run_in_executor(None, api.geocode, place) result = await coro return result[0]
рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрдиреЗ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИредрдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╣реИ, рд╣рдордиреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреА рдореБрдЦреНрдп рдХрдорд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрд╕рдВрд╕реНрдХреГрддрд┐ рдореЗрдВ рдмрджрд▓ рдЧрдП рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛редрдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде, рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмреБрдирд┐рдпрд╛рджреА рдереНрд░реЗрдбреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдПрдХ рд╣реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧредрдордореНрдореА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдХрд╛ рдЪреБрдирд╛рд╡ рдЕрдм рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рд╕рдорд╛рдзрд╛рди рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдФрд░ рдХрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реИредрд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдЕрдВрддрддрдГ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдХрд┐ I / O рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдереНрд░реЗрдбреНрд╕ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рднреВрд▓ рд╕рдХрддреЗред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рд╡реГрддреНрдд рдмрдирд╛рдпрд╛, рдЬрд╣рд╛рдБ рд╕реЗ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдХреА рдереА!рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХреЗ рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдХрд░реНрд╖ рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рднреА рдЙрдкрд╛рдп рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рднреА рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛред рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рд╕рднреА рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ, рдЖрдк рдПрдХ рдЖрд╡реЗрджрди рдореЗрдВ рдкреВрд░реЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдЙрдкрдХрд░рдг рдФрд░ рд╕рдорд╛рдирддрд╛ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИредрдкрд┐рдЫрд▓рд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп, рдЕрдзреНрдпрд╛рдп 14 "рдЙрдкрдпреЛрдЧреА рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди" рдХреЗ рд╡рд┐рд╖рдп рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдЪрдп рд╣реИред рдЪреВрдВрдХрд┐ рдПрдХ рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреА рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрддрдГ рдЖрдк рд╣рд░ рджрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред