рдкрд╛рдпрдерди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ: рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди

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



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

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

рдпрджрд┐ рдЖрдк рдПрдХ рдХрд┐рддрд╛рдм рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рдФрд░ рдЖрдкрдХреЛ рджреВрд╕рд░реА рдкреБрд╕реНрддрдХ рджреЗ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рджреВрд╕рд░реА рдкреБрд╕реНрддрдХ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдЙрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдкрдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдБ рдПрдХ рд╕рд╛рде рдХрдИ рдкреБрд╕реНрддрдХреЗрдВ рдкрдврд╝рддреА рд╣реИрдВ, рддреЛ рдпрд╣ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдПрдХрд▓-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЧрдгрдирд╛рдУрдВ рдФрд░ рдбрд┐рд╕реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рдмреАрдЪ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╛, рдХрд╣реЗрдВ, рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдпреЗ рдкреЗрдЬ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд▓реЛрдб рд╣реЛрдВрдЧреЗред рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдИ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдПрдХ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рдХрджрдо рд╣реИред

рдкрд╛рдпрдерди рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдкрд╛рдпрдерди рдиреЗ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯрд░-рдЖрдзрд╛рд░рд┐рдд рдХреЛрд░рдЯрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдлрд┐рд░, рдкрд╛рдпрдерди 3.4 рдореЗрдВ, asyncio рдореЙрдбреНрдпреВрд▓ asyncio (рдХрднреА-рдХрднреА рдЗрд╕рдХрд╛ рдирд╛рдо async IO рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ), рдЬреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкрд╛рдпрдерди 3.5 рдиреЗ рдПрд╕рд┐рдВрдХреНрд╕ / рд╡реЗрдЯ рдирд┐рд░реНрдорд╛рдг рдХреА рд╢реБрд░реБрдЖрдд рдХреАред

рдЕрдЬрдЧрд░ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпреЗ рдХреЛрд░рдЯрд╛рдЗрди рдФрд░ рдЯрд╛рд╕реНрдХ рд╣реИрдВред

Korutiny


рдЖрдорддреМрд░ рдкрд░, coroutine рдПрдХ async рдлрд╝рдВрдХреНрд╢рди рд╣реИред Coroutine рдПрдХ coroutine рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рджреА рдЧрдИ рд╡рд╕реНрддреБ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред

рдпрджрд┐, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ await рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 await say_after(1, 'hello') 

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

рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдШрдЯрдирд╛ рд▓реВрдк рдкрд░ рд░рд┐рдЯрд░реНрди рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред asyncio рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ asyncio , рдИрд╡реЗрдВрдЯ рд▓реВрдк рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИ, I / O рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ asyncio рдХрд░рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд░рдЯрд┐рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд╛рд░реНрдп


рдХрд╛рд░реНрдп рдЖрдкрдХреЛ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдореЗрдВ рдХреЛрд░рдЖрдЙрдЯреНрд╕ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХрдИ рдХреЛрд░рдЯрд╛рдЗрди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХреЛрд░рдЯрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ async def рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╕рдВрд╕реНрдерд╛рдПрдВ рдХреЛрд░рдЖрдЙрдЯ рд╣реИрдВред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рдпрдерди рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 import asyncio import time async def say_after(delay, what):    await asyncio.sleep(delay)    print(what) async def main():    task1 = asyncio.create_task(        say_after(1, 'hello'))    task2 = asyncio.create_task(        say_after(2, 'world'))    print(f"started at {time.strftime('%X')}")    #     (      #  2 .)    await task1    await task2    print(f"finished at {time.strftime('%X')}") asyncio.run(main()) 

say_after() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ async рдЙрдкрд╕рд░реНрдЧ рд╣реИ; рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ coroutine рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╣рдЯрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

     await say_after(1, 'hello')    await say_after(2, 'world') 

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрд░рдЖрдЙрдЯ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 3 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд▓рдЧрднрдЧ 2 рд╕реЗрдХрдВрдб рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ async рд╕рд╛рде main() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ asyncio рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдирд┐рдореНрди рдХреЗ рд╕рдорд╛рди рдПрдХ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 started at 20:19:39 hello world finished at 20:19:41 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╣рд▓реА рдФрд░ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк 2 рд╕реЗрдХрдВрдб рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреЛрд░реБрдЯрд┐рди рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3 рд╕реЗрдХрдВрдб рд╣реЛрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг


рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рджрд╕ рддрддреНрд╡реЛрдВ рдХреА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЕрдВрдд рд╕реЗ рдЧрдгрдирд╛ рд╢реБрд░реВ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдп 10 рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ 9 рдФрд░ 8 рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЬреЛрдбрд╝рдХрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЧрдгрдирд╛ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреАред рдирддреАрдЬрддрди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐ 1 рд╕реЗ 10 рддрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдпреЛрдЧ 55 рд╣реИред рдЗрд╕реА рд╕рдордп, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдЕрдХреНрд╖рдо рд╣реИ, рдпрд╣рд╛рдВ time.sleep(0.1) рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╣реИ:

 import time def fib(n):    global count    count=count+1    time.sleep(0.1)    if n > 1:        return fib(n-1) + fib(n-2)    return n start=time.time() global count count = 0 result = fib(10) print(result,count) print(time.time()-start) 

рдпрджрд┐ рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ asyncio.gather рдирд┐рд░реНрдорд╛рдг рд▓рд╛рдЧреВ рдХрд░рддреЗ asyncio.gather , рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ asyncio.gather , рдЬреЛ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ?

 import asyncio,time async def fib(n):    global count    count=count+1    time.sleep(0.1)    event_loop = asyncio.get_event_loop()    if n > 1:        task1 = asyncio.create_task(fib(n-1))        task2 = asyncio.create_task(fib(n-2))        await asyncio.gather(task1,task2)        return task1.result()+task2.result()    return n 

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

рдкрд░рд┐рдгрд╛рдо


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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрд╛рдпрдерди рдХреЛрдб рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ?


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


All Articles