多线程运行python文件(bat文件)的几种方法

当写好了多个自动化报表以后,如果每次多逐一运行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来存放不同的文件名,根据当前星期或日期来自动选择运行哪一些文件

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lzykevin/article/details/103414167