I have two simple scripts that allow me to say 'start task Y when task X is done', and to effectively make queues. Usage: ```bash lwn Task1 do_something with args wfp Task2 Task1 do_something_else wfp Task3 Task1 do_something_else_at_the_same_time wfp Task4 Task2+Task3 do_something_after_tasks_2_and_3_are_done # wait for multiple processes, names separated by + ``` lwn (launch with name): ```python #!/usr/bin/env python from setproctitle import setproctitle # python -m pip install setproctitle from subprocess import run import sys args = sys.argv[1:] if len(args) < 2: print(f"Not enough arguments") print(f"{sys.argv[0]} [ ...]") exit(1) title = args[0] if len(title) > 15: title = title[:15] print(f"Truncating title to '{title}'") setproctitle(args[0]) cmd = args[1:] exit(run(cmd).returncode) ``` wfp (wait for process): ```python #!/usr/bin/env python from setproctitle import setproctitle # pip install setproctitle from subprocess import run from pgrep import pgrep # pip install pgrep from time import sleep from sys import argv from datetime import datetime def now(fmt="%c"): return datetime.now().strftime(fmt) try: me, myname, targetname, *cmd = argv except ValueError: print(f"{argv[0]} [ ...]") exit(1) def truncname(x): if len(x) > 15: x = x[:15] print(f"Truncating proc name to '{x}'") return x targetnames = [truncname(x) for x in targetname.split("+")] setproctitle(myname) def pgreps(xs): return sum([pgrep(x) for x in xs],[]) while m := pgreps(targetnames): sleep(1) print(f"Waiting for {len(m)} process{'es' if len(m)>1 else ''}... {now()}",end="\r") print() if len(cmd) > 0: exit(run(cmd).returncode) else: exit(0) ```