Sync tasks in loop
In this example too we'll use sleep to pretend we are waiting for some external task to finish, but this time we'll start a number of jobs based on what the user supplies.
We can't know up-front how many tasks we'll have to call.
Code
import time
import sys
def do_task(task_id: int, sec: int):
print(f"Start task {task_id}")
time.sleep(sec)
print(f"End task {task_id}")
def main():
if len(sys.argv) != 2:
exit(f"Usage {sys.argv[0]} NUMBER")
for i in range(int(sys.argv[1])):
do_task(i, 1)
start = time.monotonic()
main()
end = time.monotonic()
print(f"Elapsed time: {end-start}")
Output
Start task 0
End task 0
Start task 1
End task 1
Start task 2
End task 2
Start task 3
End task 3
Elapsed time: 4.000992348068394
As one could expect from such code, the total time required for such program to run is the sum of all the tasks as they run sequentially.