运行 多个 python 脚本从主脚本并行

Run multiple python scripts in parallel from master script

我想运行 并行python 多个脚本并从主脚本启动它们。我确实在之前提出的问题中找到了解决方案,但是,如果脚本 运行 并行包含循环,则其中的 none 有效。 例如,让我们定义两个脚本。

脚本 1:

array_1 = []

x = 0
while True:
    array_1.append(x)
    x = x + 1

脚本 2:

array_2 = []

x = 0
while True:
    array_2.append(x)
    x = x + 1

现在我想 运行 同时处理这两个过程。以前的解决方案建议将以下代码用于主脚本:

import script_1, script_2

exec(open(script_1))
exec(open(script_2))

虽然这是从另一个脚本中启动脚本的解决方案,但是,这不会 运行 这两个脚本并行。 这样的主脚本到底应该是什么样子的?

感谢您的建议!

编辑

我尝试了以下线程方法:

def function_1():
print('function 1 started...')
    while True:
        print('1')
        sleep(1)

def function_2():
print('function 2 started...')
    while True:
        print('2')
        sleep(1)

thread_1 = Thread(target=function_1())
thread_2 = Thread(target=function_2())
thread_1.start()
thread_2.start()


thread_1.join()
thread_2.join()
print("thread finished")

它不起作用,只有第一个函数启动,所以我得到以下输出:

function 1 started...
1
1
1
1
1
1

当你想产生一个新线程时,你需要传递你希望线程执行的函数的地址,而不是调用它。您在这里所做的实质上是生成一个新线程,该线程立即调用 function_1() 当然会永远运行。

此外,您将无法访问这行代码:

print("thread finished")

由于线程正在执行一个 while 循环 - 永远,所以它是多余的..

from time import sleep
from threading import Thread


def function_1():
    print('function 1 started...')
    while True:
        print('1')
        sleep(1)


def function_2():
    print('function 2 started...')
    while True:
        print('2')
        sleep(1)


thread_1 = Thread(target=function_1)
thread_2 = Thread(target=function_2)
thread_1.start()
thread_2.start()

thread_1.join()
thread_2.join()
# print("thread finished") - redundant