运行 多个 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
我想运行 并行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