Я хотел бы запустить несколько сценариев Python параллельно, вызванных из основного сценария Python.После завершения каждого из этих подпрограмм я хотел бы получить несколько значений из этого подпрограммы в основном скрипте.
В следующем примере я запускаю main.py, который затем вызывает sub.py 10 раз,Затем я хочу дождаться завершения всех 10 экземпляров sub.py и получить списки из каждого экземпляра.Это работает с одним числовым значением, но я хотел бы получить список строк или даже одну большую строку.
Итак, два вопроса ...
Правильно ли я выполняю параллельную обработку?То, что это работает, не делает его «правильным».
Возможно ли передать список или большую строку из sub.py обратно в main.py или я застрял содиночные числовые значения аля коды выхода?
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)