在Python中调用另一个脚本并从该脚本检索多个值

2024-05-23 13:37:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想并行运行几个python脚本,从主python脚本调用。随着这些子脚本的完成,我想从主脚本的子脚本中检索多个值

在下面的示例中,我启动main.py,然后调用sub.py 10次。然后我想等到sub.py的所有10个实例都完成之后,从每个实例中检索列表。这确实适用于单个数值,但我想检索一个字符串列表,甚至一个大字符串

所以,有两个问题

  1. 我是否正确地进行了并行处理?仅仅因为它起作用并不意味着它是“正确的”

  2. 是否可以将一个列表或大字符串从sub.py传递回main.py,或者我是否只能使用单个数值作为退出代码

主.py

#
# main.py - main program module
#

import subprocess
import time

procs=[]

# Open 10 python processes
for i in range(10):
    procs.append(subprocess.Popen(["python","./sub.py"]))

# Loop until no "None" returned
while True:
    for proc in procs:
        if proc.poll() == None:
            break
    else:
        break

for proc in procs:
    print("{} values".format(proc.poll()))

sub.py公司

#
# sub.py - Called by main.py
# 
# Generate a random list of numbers, then sleep a couple seconds
#

import time
import random
import sys

out = [] # List containing our random values
amt = random.randint(1,10)  # How many values to return
slp = random.randint(1,4)   # Number of seconds to sleep

# Generate random values in a list
for i in range(amt):
    out.append(random.randint(1,10))

print("Sleeping {} seconds.".format(slp))
time.sleep(slp)

sys.exit(out)

Tags: 字符串inpyimport脚本列表fortime