让 Python 对象的单个实例监听未来参数的顺序
Have a single instance of Python object listen to sequential of future arguments
假设我有一个 python class 开销很大
class some_class:
def __init__(self):
self.overhead = large_overhead
# Get new data
def read_new_data(self, data):
self.new_data = data
def do_something(self):
# DO SOMETHING.
假设我想让它监听另一个程序或多个程序的输出,并且我有办法保持这种稳定的输入流。考虑到开销,我如何不每次都启动一个新实例?我是否创建一个新脚本并打包 class 以维护其 'live'?如果是这样,如果程序的输出无法与我是 运行 的脚本直接通信而不通过像 SQL 或文件这样的中间存储?
您可以使用 class 变量:
class some_class:
overhead = large_overhead
# Get new data
def read_new_data(self, data):
self.new_data = data
def do_something(self):
# DO SOMETHING.
现在仅在定义 class 时计算一次开销,您可以在任何 class 个实例中使用 self.overhead
。
缺乏细节...使用 asyncio 设置 listeners/watchers 并将对象的方法注册为数据进入时的回调 - 运行 事件循环中的整个过程。
虽然这很容易 说 并且非常抽象,但我确信我将有一个非常陡峭的学习曲线来实现它,特别是考虑到我想实现一些测试基础设施。但这似乎很简单。
假设我有一个 python class 开销很大
class some_class:
def __init__(self):
self.overhead = large_overhead
# Get new data
def read_new_data(self, data):
self.new_data = data
def do_something(self):
# DO SOMETHING.
假设我想让它监听另一个程序或多个程序的输出,并且我有办法保持这种稳定的输入流。考虑到开销,我如何不每次都启动一个新实例?我是否创建一个新脚本并打包 class 以维护其 'live'?如果是这样,如果程序的输出无法与我是 运行 的脚本直接通信而不通过像 SQL 或文件这样的中间存储?
您可以使用 class 变量:
class some_class:
overhead = large_overhead
# Get new data
def read_new_data(self, data):
self.new_data = data
def do_something(self):
# DO SOMETHING.
现在仅在定义 class 时计算一次开销,您可以在任何 class 个实例中使用 self.overhead
。
缺乏细节...使用 asyncio 设置 listeners/watchers 并将对象的方法注册为数据进入时的回调 - 运行 事件循环中的整个过程。
虽然这很容易 说 并且非常抽象,但我确信我将有一个非常陡峭的学习曲线来实现它,特别是考虑到我想实现一些测试基础设施。但这似乎很简单。