【发布时间】:2021-11-20 06:28:43
【问题描述】:
我有一个程序,比如说“main.py”,它通过参数“python main.py 3”或例如“python main.py 47”运行,这意味着在程序中运行特定的ID自己。
我正在尝试编写另一个脚本,比如说“start.py”,以便它启动一定数量的此类程序。如果在 start.py 中我写了线程 = 4,超时 = 5,那么它应该运行“python main.py 1”、“python main.py 2”、“python main.py 3”、“python main.py 4” " 同时执行,但每个命令之间有 5 秒的延迟。
我知道如何在一个线程中执行此操作,但在前一个线程完成之前不会运行其他参数。
threads = 4
id = 1
for i in range(threads):
os.system(f"python main.py {id}")
id += 1
time.sleep(5)
我试图通过多处理来做到这一点,但我失败了。实现这一点的最佳方法是什么,我是否朝着正确的方向前进?
我已经通过 bash 完成了这项工作,但我只需要在 Python 中完成。
for ((i=1; i<=4; i++))
do
python3 main.py "$i" &
done
【问题讨论】:
-
不要使用
os.system()来执行此操作。在main.py内部确保有一个函数main()接受参数。您可以在不对main.py进行任何其他更改的情况下添加这样的功能。然后在start.py做import main并且每次你想启动那个功能时,做main.main(1)等等。
标签: python multithreading multiprocessing os.system simultaneous