版权声明:本文为CSDN博主「qiaoyurensheng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qiaoyurensheng/article/details/123410218

编写python程序时,需要多个py文件在不同终端内同时运行,从而配合实现某种功能,经过多方查找与实验,排除了很多无法使用的方案,最终确定了以下两个方案,现将其记录下来,以免后期忘记,同时也给他人以参考!

多线程执行程序

:::tips 创建文件 run.py 并将以下文件修改后填入,之后运行 python run.py 即可。 :::

  1. #coding=utf-8
  2. import time
  3. # from selenium import webdriver
  4. import threading
  5. import os
  6. # 根据需要填写需要运行的命令
  7. def frpc():
  8. os.system('/usr/local/bin/frpc')
  9. def httpServer():
  10. os.system('python ./httpServer.py 8888 ')
  11. def face2rmtp():
  12. os.system('python ./face2rmtp.py')
  13. threads = []
  14. # threads.append(threading.Thread(target=frpc))
  15. threads.append(threading.Thread(target=httpServer)) #args为函数接受的参数,多个
  16. threads.append(threading.Thread(target=face2rmtp))
  17. print(threads)
  18. if __name__ == '__main__':
  19. os.system('/usr/local/bin/frpc')
  20. for t in threads:
  21. t.setDaemon(True)
  22. #我拿来做selenium自动化模拟多个用户使用浏览器的时候,加了这个就启动不了,要去掉,原因找到了 :
  23. # 加了这个是说明 主线程 执行完了 子线程也停止(无论是否执行完毕)
  24. t.start()
  25. t.join()
  26. # print("all over %s" %ctime())

多进程执行程序

  1. import time
  2. import multiprocessing
  3. import os
  4. # 根据需要填写需要运行的命令
  5. def frpc():
  6. os.system('/usr/local/bin/frpc')
  7. def httpServer():
  8. os.system('python ./httpServer.py 8888 ')
  9. def face2rmtp():
  10. os.system('python ./face2rmtp.py')
  11. if __name__ == '__main__':
  12. start = time.time()
  13. p1 = multiprocessing.Process(target=frpc,)
  14. p2 = multiprocessing.Process(target=httpServer,)
  15. p3 = multiprocessing.Process(target=face2rmtp,)
  16. # 启动子进程
  17. p1.start()
  18. p2.start()
  19. p3.start()
  20. # 等待fork的子进程终止再继续往下执行,可选填一个timeout参数
  21. p1.join()
  22. p2.join()
  23. p3.join()
  24. end = time.time()