В Python вже додали нативні співпрограми та асинхронні генератори. Настав час і для генераторів списків (а також словників, множин і короткого оголошення генераторів).
Власне, в чому проблема?
Python має вбудований короткий та потужний синтаксис для створення списків, словників, множин і короткого оголошення генераторів. В PEP 530 описується реалізація цього механізму для асинхронного коду. Давайте розглянемо на прикладі. Цей код:
result = []
async for i in aiter():
if i % 2:
result.append(i)
Можна буде записати ось так:
result = [i async for i in aiter() if i % 2]
Також всередині допускається використання await
:
result = [await fun() for fun in funcs]
Як бачите, тут await
використовується без async for
. Новий PEP дозволяє використовувати його як з синхронними, так і з асинхронними циклами.
Мені подобається, але коли цим можна буде користуватися?
Вельмишановний пан Гвідо 6 вересня 2016 р. схвалив це нововведення, воно буде включено в Python 3.6, який вийде в кінці грудня (або раніше), а бета-версія (3.6.0 beta 1) доступна вже зараз. Нагадаємо, що асинхронні генератори також доступні в Python 3.6.
Ще немає коментарів