Вызов другого скрипта и получение нескольких значений из этого скрипта в Python - PullRequest
0 голосов
/ 19 октября 2018

Я хотел бы запустить несколько сценариев Python параллельно, вызванных из основного сценария Python.После завершения каждого из этих подпрограмм я хотел бы получить несколько значений из этого подпрограммы в основном скрипте.

В следующем примере я запускаю main.py, который затем вызывает sub.py 10 раз,Затем я хочу дождаться завершения всех 10 экземпляров sub.py и получить списки из каждого экземпляра.Это работает с одним числовым значением, но я хотел бы получить список строк или даже одну большую строку.

Итак, два вопроса ...

  1. Правильно ли я выполняю параллельную обработку?То, что это работает, не делает его «правильным».

  2. Возможно ли передать список или большую строку из 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...