Add 6.13 solutions
This commit is contained in:
parent
ca9fd45ea1
commit
8426560ba4
3 changed files with 154 additions and 0 deletions
58
6_tasks/6_12_07_callbacks.py
Normal file
58
6_tasks/6_12_07_callbacks.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
import asyncio
|
||||
|
||||
codes = [
|
||||
"56FF4D",
|
||||
"A3D2F7",
|
||||
"B1C94E",
|
||||
"F56A1D",
|
||||
"D4E6F1",
|
||||
"A1B2C3",
|
||||
"D4E5F6",
|
||||
"A7B8C9",
|
||||
"D0E1F2",
|
||||
"A3B4C5",
|
||||
"D6E7F8",
|
||||
"A9B0C1",
|
||||
"D2E3F4",
|
||||
"A5B6C7",
|
||||
"D8E9F0",
|
||||
]
|
||||
|
||||
messages = [
|
||||
"Привет, мир!",
|
||||
"Как дела?",
|
||||
"Что нового?",
|
||||
"Добрый день!",
|
||||
"Пока!",
|
||||
"Спокойной ночи!",
|
||||
"Удачного дня!",
|
||||
"Всего хорошего!",
|
||||
"До встречи!",
|
||||
"Счастливого пути!",
|
||||
"Успехов в работе!",
|
||||
"Приятного аппетита!",
|
||||
"Хорошего настроения!",
|
||||
"Спасибо за помощь!",
|
||||
"Всего наилучшего!",
|
||||
]
|
||||
|
||||
|
||||
async def print_message(message):
|
||||
# print(f"Сообщение: {message}")
|
||||
return message
|
||||
|
||||
|
||||
def print_code(task: asyncio.Task):
|
||||
message_code = codes.pop(0)
|
||||
task_message = task.result()
|
||||
print(f"Сообщение: {task_message}\nКод: {message_code}")
|
||||
|
||||
|
||||
async def main():
|
||||
tasks = [asyncio.create_task(print_message(message)) for message in messages]
|
||||
for task in tasks:
|
||||
task.add_done_callback(print_code)
|
||||
await task
|
||||
|
||||
|
||||
asyncio.run(main())
|
63
6_tasks/6_12_08_callbacks.py
Normal file
63
6_tasks/6_12_08_callbacks.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
import asyncio
|
||||
|
||||
codes = [
|
||||
"56FF4D",
|
||||
"A3D2F7",
|
||||
"B1C94A",
|
||||
"F56A1D",
|
||||
"D4E6F1",
|
||||
"A1B2C3",
|
||||
"D4E5F6",
|
||||
"A7B8C9",
|
||||
"D0E1F2",
|
||||
"A3B4C5",
|
||||
"D6E7F8",
|
||||
"A9B0C1",
|
||||
"D2E3F4",
|
||||
"A5B6C7",
|
||||
"D8E9F2",
|
||||
]
|
||||
|
||||
messages = [
|
||||
"Привет, мир!",
|
||||
"Как дела?",
|
||||
"Что нового?",
|
||||
"Добрый день!",
|
||||
"Пока!",
|
||||
"Спокойной ночи!",
|
||||
"Удачного дня!",
|
||||
"Всего хорошего!",
|
||||
"До встречи!",
|
||||
"Счастливого пути!",
|
||||
"Успехов в работе!",
|
||||
"Приятного аппетита!",
|
||||
"Хорошего настроения!",
|
||||
"Спасибо за помощь!",
|
||||
"Всего наилучшего!",
|
||||
]
|
||||
|
||||
|
||||
async def print_message(message_index: int):
|
||||
await asyncio.sleep(message_index/100 + 0.01)
|
||||
# Get code
|
||||
code = codes[message_index]
|
||||
if int(code[-1], 16) % 2 == 0:
|
||||
print("Сообщение: Неверный код, сообщение скрыто")
|
||||
else:
|
||||
print(f"Сообщение: {messages[message_index]}")
|
||||
return message_index
|
||||
|
||||
|
||||
def print_code(task: asyncio.Task):
|
||||
print(f"Код: {codes[task.result()]}")
|
||||
|
||||
|
||||
async def main():
|
||||
tasks = []
|
||||
for index in range(0, len(messages)):
|
||||
task = asyncio.create_task(print_message(index))
|
||||
task.add_done_callback(print_code)
|
||||
tasks.append(task)
|
||||
await asyncio.gather(*tasks)
|
||||
|
||||
asyncio.run(main())
|
33
6_tasks/6_12_09_callbacks.py
Normal file
33
6_tasks/6_12_09_callbacks.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
import asyncio
|
||||
import random
|
||||
|
||||
random.seed(5)
|
||||
|
||||
|
||||
def on_data_parsed(task):
|
||||
result = task.result()
|
||||
print(f"Найдено {len(result)} файлов для скачивания: {result}")
|
||||
|
||||
|
||||
async def parse_data(url):
|
||||
await asyncio.sleep(1)
|
||||
if random.choice([True, False]):
|
||||
file_urls = [f"{url}/example_file.zip"]
|
||||
current_task = asyncio.current_task()
|
||||
current_task.add_done_callback(on_data_parsed)
|
||||
else:
|
||||
file_urls = []
|
||||
return file_urls
|
||||
|
||||
|
||||
async def main():
|
||||
urls = [
|
||||
"https://example.com/data1",
|
||||
"https://example.com/data2",
|
||||
"https://example.com/data3",
|
||||
]
|
||||
tasks = [asyncio.create_task(parse_data(url)) for url in urls]
|
||||
await asyncio.gather(*tasks)
|
||||
|
||||
|
||||
asyncio.run(main())
|
Loading…
Reference in a new issue