小编app*_*pel的帖子

使用 Werkzeug 重新加载器重新加载部分代码

我有一个使用蓝图和 socketio 的 python Flask 应用程序,它在启动应用程序之前将一个大模型(5GB)加载到内存中,如下所示:

启动器.py

import app
from model import load_model

if __name__ == "__main__":
    load_model()
    app.main()
Run Code Online (Sandbox Code Playgroud)

应用程序

from app import app, socketio

def main():
    socketio.run(app, port = 5000)
Run Code Online (Sandbox Code Playgroud)

模型.py

model = None

def load_model():
    global model
    if model is None:
        model = load_bigass_model_from_external_source() #this takes roughly 40 minutes

def get_model():
    return model
Run Code Online (Sandbox Code Playgroud)

然后在我看来,我可以调用:

视图.py

from model import get_model

@blueprint.route("/", methods=["GET"])
def home():
        print get_model()
Run Code Online (Sandbox Code Playgroud)

现在一切正常,除非我开始更改代码。Werkzeug 重新加载(这本身很好),但它也会再次加载我的模型。加载模型大约需要 40 分钟,因此您可以看到这不是很理想。

我想知道是否有任何方法可以让 Werkzeug 重新加载其他所有内容,但如果模型已加载一次,则将模型保留在内存中。

python reload werkzeug flask socket.io

5
推荐指数
0
解决办法
400
查看次数

Swiftmailer Gmail 连接超时 #110

我想使用 gmail 的 smtp 和下面使用 Swiftmailer 发布的 PHP 脚本发送电子邮件。现在这在我自己的网络服务器上运行良好。但是当我在我为其创建它的人的网络服务器上使用它时,我得到了一个例外:

    Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.gmail.com [Connection timed out #110]' in ...
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?我假设它与服务器设置的差异有关,因为代码在我自己的网络服务器上工作。我已经用 phpinfo() 检查了以下内容:

- Registered Stream Socket Transports   tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
- OpenSSL support   enabled 
- OpenSSL Library Version   OpenSSL 1.0.1e-fips 11 Feb 2013 
Run Code Online (Sandbox Code Playgroud)

这是我的 PHP 代码:

    $emailname = MY_GMAIL_ACCOUNT_USERNAME;
    $emailpass = MY_GMAIL_ACCOUNT_PASSWORD;

    $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
      ->setUsername($emailname)
      ->setPassword($emailpass);

    $mailer = Swift_Mailer::newInstance($transport);

    $message = …
Run Code Online (Sandbox Code Playgroud)

smtp swiftmailer

4
推荐指数
1
解决办法
2万
查看次数

根据其他数组的阈值创建新的2d numpy数组

我有3个2d阵列,我想用它来初始化一个新的2d阵列.新的2d阵列应填充位置(x,y)的0或1,具体取决于其他3个阵列的(x,y)位置的值.

例如,我有这3个2d阵列:

A = [[2, 3, 6],    B = [[5, 9, 0],    C = [[2, 7, 6],
     [9, 8, 3],         [2, 4, 3],         [2, 1, 6],
     [1, 0, 5]]         [4, 5, 1]]         [4, 6, 8]]
Run Code Online (Sandbox Code Playgroud)

和逻辑功能:

D = (A > 4 && B < 5 && C > 5)
Run Code Online (Sandbox Code Playgroud)

这应该创建2d数组:

D = [[0, 0, 1], 
     [0, 0, 0],
     [0, 0, 1]]
Run Code Online (Sandbox Code Playgroud)

现在我可以使用2 for循环来做到这一点,但我想知道是否有更快的numpy方式?

编辑:

以下是我的真实代码示例:

val_max = 10000
a = np.asarray(array_a)
b = np.asarray(array_b)
d = ((a >= val_max) …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

3
推荐指数
1
解决办法
482
查看次数

在Python 2.7中将嵌套的dict排序到有序列表中

我有以下意见:

d = {'d_1': {'score': 5.2, 'concept': 'a'}, 
     'd_2': {'score': 10.1, 'concept': 'e'}, 
     'd_3': {'score': 1.5, 'concept': 'c'}, 
     'd_4': {'score': 20.2, 'concept': 'd'}, 
     'd_5': {'score': 0.9, 'concept': 'b'}}
Run Code Online (Sandbox Code Playgroud)

我想按分数获取排序列表,如下所示:

d_sorted = [{'d_4': {'score': 20.2, 'concept': 'd'}},
            {'d_2': {'score': 10.1, 'concept': 'e'}},
            {'d_1': {'score': 5.2, 'concept': 'a'}},
            {'d_3': {'score': 1.5, 'concept': 'c'}},
            {'d_5': {'score': 0.9, 'concept': 'b'}}]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但这将按概念而不是分数进行排序:

d_sorted = sorted(d.items(), key=operator.itemgetter(1), reverse=True)
Run Code Online (Sandbox Code Playgroud)

在Python 2.7中,如何将按分数键(降序)将此嵌套字典排序为有序列表?

编辑:这不是在Python 2.7中将嵌套字典排序到有序列表中的重复,因为它涉及嵌套字典。

python sorting dictionary python-2.7

2
推荐指数
1
解决办法
147
查看次数

我可以在Java中为变量'public'命名JSON序列化/反序列化吗?

所以我正在使用一个公共API,它向我发送一个带有名为'public'的布尔字段的JSON对象.

{  
    ...
    "public" : true,
    ...
}
Run Code Online (Sandbox Code Playgroud)

我正在使用GSON将其解析为Java类,但这迫使我声明以下变量,当然Java lexer/parser不同意:

private boolean public;
Run Code Online (Sandbox Code Playgroud)

有没有办法让我的变量被命名public

java naming-conventions gson

0
推荐指数
1
解决办法
167
查看次数