Как запустить некоторый код в сценарии Python, затем приостановить выполнение сценария и дождаться вызова функции из другого сценария - PullRequest
0 голосов
/ 04 мая 2019

Это немного сложно объяснить для меня, но у меня есть python-скрипт (A) с некоторой частью кода, который запускается при запуске и инициализирует некоторые вещи и переменные, а затем скрипт (A) должен подождать ...

Скрипт (A) также имеет функцию (f), которая использует инициализированные вещи и переменные.

Я хочу вызвать эту функцию (f) из другого скрипта (B).

Но моя проблема в том, что скрипт (A) закрывается после инициализации, потому что скрипт завершен.Для меня вполне вероятно, что это так, но как я могу заставить его ждать вызова из другого сценария (B).


Примером может быть: Скрипт A:

# init-part
if __name__ == '__main__':  # file is executed
    x = 3*4
# end init-part

else:
    def f():
        return x+5

Скрипт B:

import filenameA

# call funtion from A, which uses the preinitalized variable x
y = filenameA.f()
print('y=' + str(y))

Начальная часть для демонстрации здесь довольно проста, но на самом деле она более сложная, но для моей проблемы это не нужно сейчас.Вот и все.


Я думаю, это довольно просто, я хочу запустить скрипт A через консоль 'python filenameA.py', и он должен инициировать и ждать вызова функции, когда я запускаю 'python filenameB.py 'из другой консоли.

Но сценарий A закрывается после init ... Цикл ожидания использует процессорное время, это не то, что я хочу.

Я не знаю, как искатьправильно для решения этой проблемы, потому что мне довольно трудно найти правильные ключевые слова -.- Я надеюсь, вы понимаете, чего я хочу достичь =)

Я благодарен за любую помощь;) apfeltree

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Хорошо, все готово. Я реализовал в A сервер и в B клиент. Таким образом, в начале пользователь запускает A, а A выполняет предварительный расчет, а затем запускает сервер и ожидает некоторых клиентов ... Когда пользователь запускает B, он подключается к A, передает свои параметры, а A выполняет вычисления на основе предварительного расчета и отвечает на решение. (У) -> молодец

0 голосов
/ 05 мая 2019

Сценарий A

from B import b
x = 0

def f():
    return x + 5

def init():
    global x
    x = 3 * 4

if __name__ == '__main__':  # file is executed
    init()
    b(f)
# end init-part

Сценарий B:


def b(f):
    # call funtion from A, which uses the preinitalized variable x
    y = f()
    print('y=' + str(y))
...