From 8426560ba43a829f2f79dfca02096a92566a90f2 Mon Sep 17 00:00:00 2001 From: pro100ton Date: Wed, 20 Nov 2024 21:36:43 +0300 Subject: [PATCH] Add 6.13 solutions --- 6_tasks/6_12_07_callbacks.py | 58 +++++++++++++++++++++++++++++++++ 6_tasks/6_12_08_callbacks.py | 63 ++++++++++++++++++++++++++++++++++++ 6_tasks/6_12_09_callbacks.py | 33 +++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 6_tasks/6_12_07_callbacks.py create mode 100644 6_tasks/6_12_08_callbacks.py create mode 100644 6_tasks/6_12_09_callbacks.py diff --git a/6_tasks/6_12_07_callbacks.py b/6_tasks/6_12_07_callbacks.py new file mode 100644 index 0000000..69eef4e --- /dev/null +++ b/6_tasks/6_12_07_callbacks.py @@ -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()) diff --git a/6_tasks/6_12_08_callbacks.py b/6_tasks/6_12_08_callbacks.py new file mode 100644 index 0000000..d354ad1 --- /dev/null +++ b/6_tasks/6_12_08_callbacks.py @@ -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()) diff --git a/6_tasks/6_12_09_callbacks.py b/6_tasks/6_12_09_callbacks.py new file mode 100644 index 0000000..6fc3626 --- /dev/null +++ b/6_tasks/6_12_09_callbacks.py @@ -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())