实现python同时运行多个脚本并对比运行时间

项目场景:

1.实现python同时运行多个脚本
2.对比运行时间


思考过程

仅记录我的踩坑过程,便于以后回溯错误,着急的直接看实现过程:

参考链接1:python多进程多线程,多个程序同时运行
这个讲的非常好,深入浅出,计算机小白的我马上理解了。但是这个链接给的代码的例子让我觉得更像是同时运行两个函数,我要做的时同时运行两个py文件。
参考链接2:python脚本如何同时运行多个
于是我尝试写了两个程序。导入一个脚本文件
代码如下:

import sys
import task1
import task2

sys.modules['task1'].__dict__.clear()
sys.modules['task2'].__dict__.clear()

task1.py
print("This is task1!")
task2.py
print("This is task2!")

但是输出的结果与只运行task1脚本的结果相同,也没有输出This is task1!
任务紧急,先不想为啥了 看看有没有别的办法
参考链接3:解决:python同时执行多个.py文件(挂起多个程序)——线程并发
这个是线程并发,他直接在一个线程里运行一个py脚本。其实上面的进程也能这么做,直接把进程的函数主题改成运行文件就可以了。
另:这个链接里包含以上几个链接的大部分内容:python教程目录


实现过程:

着急直接看这里:

根据思考过程,直接运用多进程,在调用的函数的函数主体里调用对应的脚本,代码如下:

import multiprocessing
import time
import os

def fun1(num):
    os.system('python D:\\cubemos_SDK\\SkeletonTracking\\samples\\python\\task1.py')
    #print('1进程PID', os.getpid())
    #print('1进程父进程编号', os.getppid())
    for i in range(num):
        print('1....\n')
        time.sleep(0.5)


def fun2(num):
    os.system('python D:\\cubemos_SDK\\SkeletonTracking\\samples\\python\\task2.py')
    # print('2进程PID', os.getpid())
    # print('2进程父进程编号', os.getppid())
    for i in range(num):
        print('2....\n')
        time.sleep(0.5)

# 1. 导入进程包

if __name__ == '__main__':
    sing_process = multiprocessing.Process(target=fun1, args=(5,))
    dance_process = multiprocessing.Process(target=fun2, kwargs={'num':2}) # target

    #3. 启动进程
    sing_process.start()
    dance_process.start()

就可以看到两个脚本同时运行了。
接下来想看一下task1和task2单独完成的时间和task1、task2同时运行的时间。

查看运行时间:

参考链接:python查看程序运行时间

import time

start =time.clock()

#中间写上代码块

end = time.clock()

print('Running time: %s Seconds'%(end-start))

task1运行的时间:
2.7773832 Seconds
task2运行的时间:
1.0565337 Seconds
在test多进程运行task1和task2时:
task1:2.8532390999999997 Seconds
task2:1.0520154 Seconds
test:0.0086039 Seconds

  • [ 疑问:这是不是表明主进程跟调用的两个进程又是独立的?主进程执行完了以后,分进程还在执行。如果要实现主进程关闭,分进程也关闭,记得参考链接里也有提到]

我再运行了一次test,时间比上次更短了一点。可以看到多进程并没有特别影响简单程序的速度。

下一步就是要实现调用一个摄像头或同一张图片,同时实现二维码识别和文字识别。

你可能感兴趣的:(python,python,开发语言)