- 主题:用python调度其他程序执行,求个程序框架。
win10系统,用python调度其他程序执行和输入参数(exe)
我有10个程序, 分别是exe1,exe2,exe3...exe10。
我希望同一时间,有任意3个exe程序在运行。
每个exe运行一段时间(lifetime)后,就退出(进程被杀掉),
然后通过python,再随机启动一个exe, 这样保证任何时刻,都正好有3个exe运行。
希望用多线程来调度。每个exe启动后,我在启动它的线程里给exe提供参数,让他运行。
exe退出后,线程也结束。
我自己的思路如下,可是自己太菜,写不好。
下面思路也比较乱,请大佬指教。
1 10个程序 名字分别是 exe_1,exe_2,...exe_10,名字存在pool[]里。
pool = ['exe_1','exe_2'......'exe_10']
有一个正在跑的程序列表 running = [],开始为空。
2 主线程循环
while (len(running) < 3 ):
exe = random.choose(pool)
threading.Thread(target=do,exe_i).start()
#随机启动一个exe, 取得
#如果running里面的exe数量小于3, 则随机启动新的exe,
#主线程 从pool中随机选取3个程序, exe_i, 名字放入running[],并从pool中删除exe_i
3 针对running[]中的每个程序,
赋值 lifetime = 10000# 生命周期 10000s.
启动新的线程, 执行函数 do(exe_i),启动程序exe_i,exe_i的并获得 进程id pid_exe_i .
4 对于任何一个线程,如果lifetime到期, 线程结束,并杀死exe_i的进程
线程结束
kill pid_exe_i
def do(exe_i):
os.command(start exe_i)
input argc
--
FROM 180.164.178.*
同时启动停止也可以,不过启动exe之后,还是需要用一个线程给他提供参数,做输入输出。
【 在 ToSimplicity 的大作中提到: 】
: 为何要搞得那么复杂,随机启动3个,lifetime后,全杀掉,再随机启动3个
: --
--
FROM 180.164.178.*
自己的需求。
【 在 JulyClyde 的大作中提到: 】
: 作业还是笔试题啊?
: --
--
FROM 220.196.193.*
我是自己搞点儿事情,根据业务流程想的这个需求。以为应该比较简单、只是自己太业余所以写不出来。
难道这里涉及什么比较有难度的知识点,值得面试去考察?
【 在 JulyClyde 的大作中提到: 】
: 上上个月我遇到的一个笔试题就这样
: --
--
FROM 180.164.178.*
n个exe是一样的,但是在执行的时候,我要提供不同的参数。
lifetime,我考虑可以靠主线程计时,也可以改成子线程计数,经过指定的运行周期后子线程自己结束,然后通知主线程杀死exe,或者子线程自己杀死exe,然后退出。
【 在 Madlee 的大作中提到: 】
: 嗯,主要是你的思路乱。还是先好好描述一下你的问题吧,也许根本不应该这么做。比如这N个进程是不是完全一样的,为啥要随机选?
: --
--
FROM 180.164.178.*
不行 我的业务要求必须实时控制。
【 在 JulyClyde 的大作中提到: 】
: 我觉得如果你把参数放在启动前,会变得容易很多啊
: --
--
FROM 180.164.178.*
我去研究一下这个。
【 在 nsd 的大作中提到: 】
: 不是有线程池和进程池么,ThreadPool,设置最大线程数3,每个子任务里控制程序启动和时长控制。挺简单的啊,何必自己手撸
: --
--
FROM 180.164.178.*
这个我去研究一下。
【 在 qlogic 的大作中提到: 】
: airflow
: --
--
FROM 180.164.178.*
这个应该是比 os.command()更好吧。
【 在 chglele 的大作中提到: 】
: subprocess. ?
:
: 发自「今日水木 on iPhone 12」
: --
: 乐乐进股市
--
FROM 180.164.178.*