小编Ric*_*ard的帖子

问题是为大型hdf5文件重命名组中的所有HDF5数据集

我在hdf5中重命名数据集时遇到问题.这个过程非常缓慢.我阅读了一些文档,说明数据集名称只是数据的链接,因此可接受的重命名方法是:

group['new_name'] = group['old_name']
del group['old_name']
Run Code Online (Sandbox Code Playgroud)

但这太慢了(一夜之间只有5%完成),这让我觉得我的过程完全错了.

我正在使用python h5py,这是我的慢代码:

# Open file
with h5py.File('test.hdf5') as f:

    # Get all top level groups
    top_keys = [key for key in f.keys()]

    # Iterate over each group
    for top_key in top_keys:
        group = f[top_key]
        tot_digits = len(group)

        #Rename all datasets in the group (pad with zeros)
        for key in tqdm(group.keys()):
            new_key = str(key)
            while len(new_key)<tot_digits:
                new_key = '0'+str(new_key)
            group[new_key] = group[key]
            del group[key]
Run Code Online (Sandbox Code Playgroud)

根据@jpp的建议,我也尝试用以下代码替换最后两行group.move:

group.move(key, new_key)
Run Code Online (Sandbox Code Playgroud)

但这种方法同样缓慢.我有几个具有相同数量的数据集的组,但每个组具有不同大小的数据集.具有最大数据集(大多数字节)的组似乎重命名最慢.

当然有一种方法可以快速完成.数据集名称只是一个符号链接吗?或者重命名是否会导致整个数据集被重写?我该如何重命名HDF5文件中的许多数据集?

python performance hdf5 h5py

6
推荐指数
1
解决办法
878
查看次数

Python:无法连接到HTTPS URL,因为SSL模块不可用

我正在尝试连接到Stripe来设置付款.我有它在我的开发机器上工作,但当我推动prod时,我收到以下SSL错误:

无法连接到HTTPS URL,因为SSL模块不可用.

以下是我的设置细节:

  • Ubuntu 16.04
  • Apache 2
  • mod_wsgi的
  • Python 3.6
  • Django 1.11
  • Python/django进程都在anaconda(miniconda)虚拟环境中安装并运行,称为"protectyourreviews"

我已经阅读了多个建议重新安装python的其他SO答案,但要确保首先安装依赖项.安装内部和anaconda环境应该不是问题吗?难道anaconda不应该为我处理所有的依赖吗?

我已启用HTTPS并且正在为整个域工作(所有请求都路由到https).当我检查我的安装时,我确实有openssl,当我在django环境中打开一个shell时,我可以导入并使用该模块而不会出现问题......所以我不确定如何继续解决问题.

任何帮助深表感谢!


此外,还有一个堆栈跟踪:

File "/home/user/miniconda3/envs/protectyourreviews/lib/python3.6/site-packages/urllib3/connectionpool.py" in urlopen
  589.             conn = self._get_conn(timeout=pool_timeout)

File "/home/user/miniconda3/envs/protectyourreviews/lib/python3.6/site-packages/urllib3/connectionpool.py" in _get_conn
  251.         return conn or self._new_conn()

File "/home/user/miniconda3/envs/protectyourreviews/lib/python3.6/site-packages/urllib3/connectionpool.py" in _new_conn
  827.             raise SSLError("Can't connect to HTTPS URL because the SSL "

During handling of the above exception (Can't connect to HTTPS URL because the SSL module is not available.), another exception occurred:

File "/home/user/miniconda3/envs/protectyourreviews/lib/python3.6/site-packages/requests/adapters.py" in send
  440.                     timeout=timeout

File "/home/user/miniconda3/envs/protectyourreviews/lib/python3.6/site-packages/urllib3/connectionpool.py" in …
Run Code Online (Sandbox Code Playgroud)

python ssl mod-wsgi anaconda ubuntu-16.04

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

TensorFlow 服务 RAM 使用情况

我无法在文档中找到有关如何在 TensorFlow Serving 中保存和加载模型以及在 CPU 与 GPU 上运行时可能存在的差异的特定信息。

为了提供多个模型(以及每个模型的一个或多个版本),一个通用的工作流程是:

  • 训练模型
  • 保存冻结模型(tf.saved_model.simple_save
  • 创建包含的目录结构
    • 保存模型.pb
    • 变量/变量.data
    • 变量/变量.index
  • 指向config.conf 中的模型和版本

我目前正在 CPU 上运行推理并同时加载许多模型,这比预期的更快地消耗 RAM。保存的模型在磁盘上相对较小,但是当 TF Serving 将模型加载到内存中时,它几乎大了一个数量级。磁盘上单个200MB 的saved_model 变成RAM 中的1.5GB,极大地限制了可以加载的模型数量。

问题:

  • 这种行为(RAM 中更大的内存占用)是预期的吗?
  • TF Serving 在 CPU 和 GPU 上使用内存的方式有区别吗?
  • 我们能否通过在 GPU 上进行推理来加载更多模型?

松散相关的搜索结果:

python tensorflow tensorflow-serving

5
推荐指数
1
解决办法
3210
查看次数

在 VS Code 中调试 Vue.js 损坏

我正在 Visual Studio Code 中开发 Vue.js Web 应用程序 (Vue 2) 并使用 chrome 调试器扩展。我在几个月前按照这篇文章的建议设置了这个: visual-studio-code-breakpoint-appearing-in-wrong-place

一切都工作得很好,直到几天前推送了最新的 VS Code 更新(版本:1.47.0)。现在调试点出现在代码中的错误位置,就像之前链接的帖子一样。

在下面的示例 gif 中,调试器永远不会在我实际单击的断点处停止。断点跳转到第 40 行,这是调试时唯一实际中断的点。调试器永远不会停在第 142、147、150 行……只会停在第 40 行(我从未设置过)。

在此输入图像描述

以下是.vscode/launch.json过去几个月一直有效的配置:

{
    "version": "0.2.0",
    "configurations": [
        {
          "type": "chrome",
          "request": "launch",
          "name": "vuejs: chrome",
          "url": "http://localhost:8080",
          "webRoot": "${workspaceFolder}/src",
          "breakOnLoad": true,
          "sourceMapPathOverrides": {
            "webpack:///src/*": "${webRoot}/*",
            "webpack:///./src/*": "${webRoot}/*",
            "webpack:///./*": "${webRoot}/*",
            "webpack:///*": "*",
            "webpack:///./~/*": "${webRoot}/node_modules/*",
          }
        }
      ]
}
Run Code Online (Sandbox Code Playgroud)

更新

我想知道我的工作流程中的某些内容(例如切换 git 分支)是否是造成问题的原因,但事实似乎并非如此。我已经在同一个 git 分支上工作了一周,无法在多个 .vue 文件中设置断点。


2021 年 11 月更新

我目前正在调试 Vue/Electron 应用程序。该应用程序加载一个没有组件的页面,我想调试稍后加载的组件。我注意到在初始加载之前设置的断点不起作用。但是,如果我在加载该组件后在该组件中设置断点,它似乎可以工作。 …

debugging vue.js visual-studio-code vscode-debugger

5
推荐指数
1
解决办法
3004
查看次数

解析退回的电子邮件

解析退回(无法送达)电子邮件的最佳方法是什么?

当电子邮件退回到我的服务器时,我想找出它退回的原因(软/硬)以及无法送达的电子邮件地址。然后我可以在我的数据库中适当地处理它和/或标记用户在下次登录时更新他们的电子邮件。

我的目标是保护我的域的邮寄声誉。我只发送事务性电子邮件,但一段时间后,其中一些收件箱变得陈旧,邮件会退回。我不想每周向那些退回的地址发送电子邮件。

我找不到很多最近的问题,而且没有一个实际的解决方案:

1)如何解析从 Mailer Deamons 退回的传递状态通知电子邮件

2)自动从数据库中删除退回的电子邮件地址?

我希望有某种开源库可以帮助解析无法送达的电子邮件,但似乎找不到类似的东西。肯定人们已经处理这个问题很长时间了......

我想在我的服务器上处理这个问题,而不是通过 sendgrid/mandrill/mailgun 之类的服务。

任何人都可以指出我正确的方向吗?(我正在使用 Ubuntu 和 Postfix)

email

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