最近需要跑的仿真比较多,特地记录一下使用利用Python使用线程池方便仿真。
运行仿真程序的服务器配置为20核40线程的双CPU配置,仿真程序是由C/C++编写的单线程程序,为了充分利用服务器,可以在服务器上同时运行许多个程序以提升仿真效率。
当有重复性高的任务需要执行时,可以对脚本稍作修改即可。
本文使用的脚本原型也是来源于网络,时间长了也记不清楚具体出处。如有知晓,可提醒。
使用的Python脚本如下
# -*- coding: utf-8 -*-
from concurrent.futures import ThreadPoolExecutor
import time
import os
# 这里定义一个函数
# 输入参数a: 存储一条需要执行的命令
# 函数功能:调用相关程序执行命令
def runprogram(a):
r_v = os.system(a)
print(r_v)
# 这里定义了一个主函数
def main():
# commd: 存储了需要执行的命令,每条命令对应一个字符串
# 此处存储了4条命令,这四条命令均可以在cmd中正确执行
# 替换、添加自己需要执行的命令即可
commd=["MyProgram.exe", "MyProgram.exe -1", "MyProgram.exe -2 -3", "MyProgram.exe -help"]
# 此处定义一个线程池ThreadPoolExecutor(2),其中2代表线程池中线程数
# 每当有线程空闲,就会去commd中取一条命令然后执行,直到没有命令可取
# 这样就总有2个命令在同时执行,这里的2可以根据计算机CPU的核心数修改
with ThreadPoolExecutor(2) as executor:
for each in commd:
executor.submit(runprogram,each)
# 脚本执行方法
# 脚本文件右键->Edit with IDLE->Edit with IDLE 3.*->Run->Run Module
if __name__ == '__main__':
main()