我正在运行一个神经网络模型,该模型假设每次触发pubsub事件时都会在回调函数中异步运行。在主程序初始化期间,我将模型作为全局变量加载,这样它就可以在任何函数中访问,避免每次都在回调函数中加载模型。典型的代码可以是:
global cv_model
cv_model = load_model('my_model.h5')
def callback():
prediction = cv_model.predict(image)这个方法在我的本地机器上工作得很好。但是当我尝试使用pubsub事件回调时,我得到了一些错误。经过一番搜索,我发现'pubsub是主程序的子进程,我们不能在进程之间共享全局变量‘。我尝试了嵌套函数方法和OOPs方法,但它们都不起作用。
如何避免每次调用回调函数时都加载模型?有什么替代方法来解决这个冲突吗?
谢谢你的建议!!
发布于 2018-10-24 02:11:54
如果你不能通过发布/订阅回调来实现这一点,你可以尝试编写一个Google Cloud Function with a Pub/Sub Trigger,这样就没有这个问题了:
from keras.models import load_model
cv_model = load_model('my_model.h5')
def handle_pubsub(data, context):
image = ... # do something with the `data` arg here
prediction = cv_model.predict(image)https://stackoverflow.com/questions/52943866
复制相似问题