当写好了多个自动化报表以后,如果每次多逐一运行python文件会显得较为繁琐,此次最好的方法就是另外再写一个python文件去统一管理这些自动化报表,为了不影响报表的运行效率,则最好使用多线程的方法来管理任务。接下来将介绍几种常用的方法的python写法。
1.python中多线程运行多个.py文件
import os
import threading
reports = ['report1','report2','report3']
filepath = os.getcwd() + '\\' # 或直接写成filepath ="E:\\"
# 定义运行python文件函数
def run_py(i):
os.system(r'python '+filepath+reports[i]+'.py') # 利用os.system运行文件,后面的r为将引号中的内容当成raw string不解析,此处不写没影响
# 多线程运行python文件
if __name__ == '__main__':
for i in range(len(reports)):
task = threading.Thread(target=run_py, args=(i,)) # 注意只有一个参数时后面要加上一个逗号
task.start()
# 这种写法不要加上join(),否则反而会变成单线程运行
2.python中多线程运行多个.bat文件,并利用bat文件运行python
利用bat运行python的好处是可以直接双击在shell中运行python,相对而言比较方便,可以根据自己的实际情况来使用
- 建立bat的步骤
- 1.右键新建txt文档
- 2.文档内输入:python E:\report1.py
- 3.另存为–文件名:report1.bat 文件类型:所有文件
- 4.保存
import os
import threading
reports = ['report1','report2','report3']
filepath = os.getcwd() + '\\'
# 定义运行python文件函数
def run_bat(i):
os.system(filepath+reports[i]+'.bat')
# 多线程运行python文件
if __name__ == '__main__':
for i in range(len(reports)):
task = threading.Thread(target=run_bat, args=(i,))
task.start()
# 这种写法不要加上join(),否则反而会变成单线程运行
小技巧
- 可以写多个不同的reports=xxx并注释掉,使用的时候利用"Ctrl+"快捷注释要要使用哪一个
- 如果是周期性报表可以写一个dict来存放不同的文件名,根据当前星期或日期来自动选择运行哪一些文件
运行结果