【问题标题】:How to run some code in python script, then pause script and wait for function call from another script如何在 python 脚本中运行一些代码,然后暂停脚本并等待另一个脚本的函数调用
【发布时间】:2019-09-22 23:44:03
【问题描述】:

对我来说解释起来有点困难,但是我有一个带有一些代码部分的 python 脚本 (A),它在启动时运行并初始化一些东西和变量,然后脚本 (A) 应该等待...

脚本 (A) 还有一个函数 (f),它使用初始化的事物和变量。

然后我想从另一个脚本 (B) 调用这个函数 (f)。

但我的问题是,脚本 (A) 在 init 部分之后关闭,因为脚本已完成。这样做对我来说是合理的,但我怎么能让它等待来自另一个脚本 (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))

这里演示的初始化部分很简单,但实际上它更复杂,但对于我的问题,现在没有必要了。 就是这样。


我认为这很简单,我想通过控制台“python filenameA.py”启动脚本 A,当我从另一个控制台启动“python filenameB.py”时,它应该初始化并等待函数调用。

但脚本 A 在初始化后关闭...等待循环使用 CPU 时间,这不是我想要的。

我不知道如何正确搜索此问题的解决方案,因为我很难找到正确的关键字 -.- 我希望你明白我想要实现的目标 =)

感谢您的帮助 ;) apfeltree

【问题讨论】:

  • 可能是XY Problem
  • 这里的 RPC 链接是什么?你能解释一下吗? @ivan_pozdeev
  • @jdigital 不,我认为 xy 没有其他问题。我只想在以后的函数调用中使用更耗时的初始化部分,而不是再次执行初始化部分......
  • 你只需要让脚本A调用脚本B。这样A可以初始化东西,通过调用B等待B,B可以从A调用一些东西。

标签: python function wait method-call


【解决方案1】:

脚本 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))

【讨论】:

  • B不应该在A之后直接调用。有一些用户,在随机时间手动启动B,当用户需要从f()进行一些计算时......
  • 你的意思是当用户启动A时,那么每次计算的值可能不同,或者可能需要很长时间才能计算出来,所以需要A预先计算好,并且会等待可能有多个运行 B 的用户吗?
  • 是的,我们现在走在正确的轨道上:A 应该预先计算值,每次都没有不同,但计算需要一些时间。用户可以从 B 开始使用函数 f()(带有一些可能与每次调用不同的参数)计算结果,但不需要太多时间,因为 A 预先计算了一些值。用户可以开始这个计算多次,每次都应使用预先计算的值 - 它们保持不变。
  • 我想实现来自 B 的用户调用更快,因为某些值是预先计算的;)
  • 为什么不将运行脚本 A 的结果保存到文件并退出。稍后脚本 B 运行,从 A 调用一些函数,这些函数读取文件并返回数据。
【解决方案2】:

好的,现在完成了。 我在 A 中实现了服务器,在 B 中实现了客户端。所以一开始用户启动A,A进行预计算,然后启动服务器并等待一些客户端......当用户启动B然后它连接到A,传输其参数,A根据预计算进行计算,然后答案 B 解决方案。 (y) --> 对我来说做得很好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多