Добрый день! Я правильно понимаю, что вы хотите пример многозадачности, где одна задача выполняется в течение одного часа, а другая задача выполняется в течение двух часов, независимо друг от друга? Я могу дать пример использования многопоточности в такой задаче. Допустим, у нас есть приложение, которое помогает управлять системой полива двух растений. Первое растение должно поливаться каждый час в течение 10 минут, а второе растение должно поливаться каждые два часа на 20 минут. Мы можем запустить два потока, каждый из которых управляет поливом соответствующего растения. В первом потоке мы можем использовать sleep (10 минут) после того, как произойдет полив, а затем повторить эту операцию бесконечное количество раз. Во втором потоке мы также можем использовать sleep (2 часа) для ожидания следующего полива огорода, а затем выполнить полив на 20 минут и повторять этот процесс бесконечное количество раз. Таким образом, в обоих потоках мы можем синхронизировать задачи и обеспечить их независимое выполнение. Многозадачность позволяет улучшить производительность и использовать ресурсы более эффективно. Конечно, вот пример на Python: import threading import time # Создаем класс овощного сада class VegetableGarden: def init (self, vegetable, watering_interval, watering_time): self.vegetable = vegetable self.watering_interval = watering_interval self.watering_time = watering_time # Метод полива овощей def watering(self): while True: print(f"{self.vegetable} is being watered") time.sleep(self.watering_time) # время полива овощей print(f"{self.vegetable} has been watered") time.sleep(self.watering_interval) # время между поливами овощей # Создаем два потока: один для первого овоща, а второй - для второго овоща thread1 = threading.Thread(target=VegetableGarden("Tomatoes", 60 * 60, 10 * 60).watering) thread2 = threading.Thread(target=VegetableGarden("Cucumbers", 2 * 60 * 60, 20 * 60).watering) # Запускаем потоки thread1.start() thread2.start() # Ждем завершения потоков thread1.join() thread2.join() В этом примере мы также используем многопоточность, чтобы реализовать систему полива овощей. У каждого растения есть своя частота полива и время полива. Мы создаем два потока, каждый из которых управляет соответствующим растением. VegetableGarden - это класс, представляющий овощной сад. У каждого экземпляра класса есть свой вид растения (vegetable), время между поливами (watering_interval) и время полива (watering_time). Метод watering в бесконечном цикле выполняет полив растения с использованием sleep для времени полива и времени между поливами. thread1 и thread2 - это объекты потоков, которые мы создали с помощью Thread. Мы вызываем метод start для запуска обоих потоков, а затем используем метод join, чтобы ждать завершения потоков. Этот пример на Python - это еще один способ реализации многозадачности для решения задачи включения/выключения в конкретное время.

Комментарии: 9

  1. Charleyebot

    Я хочу разобраться как на одной двухканальной реле сделать задачи на протяжении всего времени, а именно: 12 часов работы/12 часов выключения света на одном реле, а на другом реле параллельно проветривание каждые 3 часа по 10 минут. Последовательно у меня получается, но тут одно надо выключать что бы другое работало

  2. Charleyebot

    Спасибо, но по прежнему не особо понимаю. Буду искать ещё может на англоязычных форумах. Гайды есть по подключению конечно, но там одно всего подключают на двухканальной)

    • Bulochka

      многофазное реле времени, в идеале

      • Charleyebot

        Выглядят как реле для ардуино?

        • Mezzo

          Выглядят как готовое устройство

          • Bulochka

            а вообще, в приведенном коде надо просто перенести переменную в глобальную зону, но есть сложности вида out of range.... решаемо, если в одном цикле срезать с переменной всё, что больше 2 часов.... грязный хардкод, но наиболее простое решение

Не нашли ответ?

Вам также может быть интересно