Erstelle einen Task-Scheduler, der eine Liste von Funktionen mit einer festen Verzögerung zwischen jedem Task ausführt.
print('Task 1 executed!')
ausführen.task_scheduler
, die eine Liste von Funktionen und eine feste Zeitverzögerung als Argumente akzeptiert. Dieser Taskscheduler führt die Tasks in der Liste dann mit der Zeitverzögerung aus. time.sleep
-Methode, um die Verzögerung zwischen den einzelnen Tasks zu implementieren.def task1(): """ Eine einfache Funktion, die eine Meldung ausgibt, um zu signalisieren, dass Task 1 ausgeführt wurde. """ pass def task2(): """ Eine einfache Funktion, die eine Meldung ausgibt, um zu signalisieren, dass Task 2 ausgeführt wurde. """ pass def task_scheduler(tasks, delay): """ Führt eine Liste von Tasks mit einer festen Zeitverzögerung zwischen jedem Task aus. Args: tasks (list): Eine Liste von Funktionen, die ausgeführt werden sollen. delay (int): Die Zeitverzögerung in Sekunden zwischen den einzelnen Tasks. Returns: None """ pass def task_scheduler_expert(tasks, delays): """ Führt eine Liste von Tasks mit unterschiedlichen Zeitverzögerungen zwischen jedem Task aus. Args: tasks (list): Eine Liste von Funktionen, die ausgeführt werden sollen. delays (list): Eine Liste von Zeitverzögerungen in Sekunden für die jeweiligen Tasks. Returns: None """ pass if __name__ == '__main__': tasks = [task1, task2] delay = 2 delays = [2,3] task_scheduler(tasks, delay) task_scheduler_expert(tasks, delays)
Erweitere den Task-Scheduler, damit er für jeden Task eine individuelle Verzögerung hat.
task_scheduler
-Funktion, so dass sie zwei Listen als Argumente akzeptiert: eine mit den Tasks und eine mit den Verzögerungen. Nennen die Funktion task_scheduler_expert
# define your tasks here def task_scheduler(tasks, delay): # This function should be done by now pass def task_scheduler_expert(tasks, delays): # your code goes here pass if __name__ == '__main__': tasks = [task1, task2] delay = 2 delays = [2,3] task_scheduler(tasks, delay) task_scheduler_expert(tasks, delays)
Exkurs zur ZIP-Funktion
Die zip
-Funktion kombiniert die Elemente mehrerer Iterables (wie Listen oder Tupel) und gibt einen Iterator von Tupeln zurück, wobei das erste Element in jedem Argument das erste Element im ersten Tupel usw. ist. Im obigen Beispiel würde die Verwendung von zip
mit den Listen tasks
und delays
zu einem Iterator führen, der die folgenden Tupel enthält:
(<function task1 at 0x10044d1b0>, 1) (<function task2 at 0x10044d900>, 3)
Wenn du diesen Iterator in eine Liste umwandeln möchtest, kannst du die list
-Funktion verwenden. Zum Beispiel:
tasks = [task1, task2] delays = [1, 3] zipped_list = list(zip(tasks, delays)) # zipped_list wäre nun: [(<function task1 at 0x10044d1b0>, 1), (<function task2 at 0x10044d900>, 3)]
Natürlich kann zip
auch für andere Datentypen verwendet werden:
# Definieren von zwei Listen names = ['Alice', 'Bob', 'Charlie'] ages = [25, 30, 22] # Verknüfen von zwei Listen in eine neue Liste von Tuples zipped_list = list(zip(names, ages)) # zipped_list wäre nun: [('Alice', 25), ('Bob', 30), ('Charlie', 22)] # Verwenden der zip-Funktion, um die Listen zu kombinieren und direkt mit dem Iterator zu interieren for name, age in zip(names, ages): print(f'{name} is {age} years old')
Führt zur Ausgabe:
Alice is 25 years old Bob is 30 years old Charlie is 22 years old