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

时间:2018-10-19 01:15:28

标签: python parallel-processing

我想并行运行从主python脚本调用的多个python脚本。这些子脚本中的每一个都完成后,我想从主脚本中的该子脚本中检索多个值。

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

所以,有两个问题...

  1. 我正确地执行并行处理吗?仅仅因为它起作用就不能使其“正确”。

  2. 是否可以将列表或较大的字符串从sub.py传递回main.py,还是我会停留在单个数字ala退出代码中?

main.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)

0 个答案:

没有答案