如何从主脚本同时运行两个python脚本

时间:2018-06-22 04:23:01

标签: python multithreading

我有两个独立的脚本,它们处于无限循环中。我需要从另一个主脚本中调用它们,并使它们同时运行。同时产生结果。

这是一些脚本

script1.py

y= 1000000000
while True:
      y=y-1
      print("y is now: ", y)

script2.py

x= 0
while True:   
   x=x+1
   print("x is now: ", x)

目标是使用pyinstaller将主脚本编译到一个控制台中

3 个答案:

答案 0 :(得分:1)

您可以使用python'multiprocessing'模块。

import os
from multiprocessing import Process

def script1:
    os.system("script1.py")     
def script2:
    os.system("script2.py") 

if __name__ == '__main__':
    p = Process(target=script1)
    q = Process(target=script2)
    p.start()
    q.start()
    p.join()
    q.join()

请注意,'print'语句可能不是检查进程并行性的准确方法。

答案 1 :(得分:0)

Python脚本在导入时执行。 因此,如果您真的想保持两个脚本不变,则可以在一个单独的过程中导入每个脚本,如下所示。

from threading import Thread


def one(): import script1
def two(): import script2

Thread(target=one).start()
Thread(target=two).start()

类似于,如果要两个进程而不是线程:

from multiprocessing import Process


def one(): import script1
def two(): import script2

Process(target=one).start()
Process(target=two).start()

答案 2 :(得分:-1)

将脚本代码包装在函数中,以便可以导入它们。

def main():
    # script's code goes here
    ...

使用“ if main”保持脚本运行的能力。

if __name__ == '__main__':
    main()

使用多处理或线程来运行创建的函数。

如果您确实无法使脚本可导入,则可以始终使用子流程模块,但是运行程序和脚本(如果需要)之间的通信会更加复杂。