Три способа выполнить множество задач с asyncio
Функция для примера:
async def do_it(n):
await asyncio.sleep(random.uniform(0.5, 1))
return n
1. Последовательный вызов
async def main():
for i in range(100):
result = await do_it(i)
Такой вызов имеет смысл только тогда, когда результат одной задачи требуется для вызова следующей.
Если они независимы, то это антипаттерн, так как аналогичен простому синхронному вызову по очереди.
2. Упорядоченный результат
async def main():
tasks = [do_it(i) for i in range(100)]
results = await asyncio.gather(*tasks)
Выполняет корутины конкурентно и возвращает результат в виде списка.
Полезен когда требуется получить результаты в том же порядке в котором задачи отправлены.
3. Результат по мере готовности
tasks = [asyncio.create_task(do_it(i)) for i in range(100)]
for cor in asyncio.as_completed(tasks):
result = await cor
Так же выполняет корутины конкурентно, но не гарантирует порядок. Результат возвращается по мере готовности, каждый отдельно.
Полезен когда нужно обработать любой ответ как можно скорее.
#async
Усики — пропуск в трусики 🔞
Одиниз первых постов на нашем канале (2022 года), но он хорошо вписывается в тему «Сексуальная жизнь насекомых»
В статье китайских учёных «Precopulatory oral sex contact plays an important role in copulatory success in a cryptic desert beetle» речь идёт о монгольской чернотелке Platyope mongolica Faldermann, 1835 #Coleoptera#Tenebrionidae.
В 2021 был описан интересный случай полового поведения. Полевые и лабораторные исследования показали, что полный цикл спаривания включал четыре этапа: преследование, оральный сексуальный контакт, подготовка к спариванию (самец взбирается на самку), и само спаривание. Оральные ласки самцы проводили верхнечелюстными щупиками. Если оральные ласки не удовлетворяли самку, она уклонялась от спаривания. Оказалось, что чем меньше времени самец тратит на оральные ласки, тем меньше у него шансов на совокупление. Самцы с удалёнными усиками не различали пол партнера, и тогда наблюдались гомосексуальные контакты.
Beetles of the World🪲
Stenus (Stenus) biguttatus (Linnaeus, 1758) #Coleoptera#Staphilinidae from Vologda Oblast and amazing mouthparts of the genus Stenus beetles.
Адгезивный аппарат Stenus spp. для захвата добычи (a–c). (а, b) S. comma — по: Bauer, Pfeiffer, 1991; (c) S. nitidiusculus. (а) Голова с выступающей нижней губой. Масштабная линейка 1 мм. (b) Вершина прементума с параглоссами, в виде липких подушечек. 100 мкм. (c) Детальный вид липкой подушечки. Обратите внимание на адгезивные трихомы, разветвленные на вершине. 20 мкм. (d) Последовательность захвата добычи у S. comma. После приближение жертвы на критическое расстояние (вверху), аппарат для захвата добычи быстро выдвигается (посередине), приклеенная добыча притягиваются к мандибулам (внизу) — по: Weinreich, 1968. (e) Внешний вид S. guttula. Длина: 4,3 мм. Фото: Udo Schmidt. Сокращения: mct – мембранозная соединительная трубка, pm – прементум.
По: Biology of Rove Beetles (Staphylinidae): Life History, Evolution, Ecology and Distribution, 2018. #экология
Rare Central Asian species Agabus (Gaurodytes) friedrichi (Falkenström, 1936) #Coleoptera#Dytiscidae
Редкий среднеазиатский вид Agabus (Gaurodytes) friedrichi (Falkenström, 1936) #Coleoptera#Dytiscidae#species