小编And*_*sen的帖子

jsonl 文件的 mime 类型是什么?

当响应http类型为 的文件的请求jsonl时,即由换行符分隔的 json 对象的集合,我应该设置什么 mime 类型?我尝试在 SO 上搜索jsonl mime typeand jsonl mimetype,但找不到任何有关它的信息。

我的回复如下(flask/python):

response = Response(
    generate_jsonl(object_iterable),
    mimetype='application/json',
    headers={
        'Content-Type': 'application/json;charset=UTF-8',
        'Content-Disposition': 'attachment;filename=%s.json' % file_name,
    },
)
Run Code Online (Sandbox Code Playgroud)

json mime-types

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

如何直接在 python 代码中配置 tesseract 中的 OMP_THREAD_LIMIT 以禁用多处理?

我在一个使用 docker-compose 运行的项目中使用 tesseract。我不知道如何直接在我的 python 文件中配置单个处理器核心。我想这样做是因为并行 Tesseract 时会出现缓慢和过度消耗的情况。

我发现了很多类似的主题,但它们只涉及如何在命令行上配置 OMP_THREAD_LIMIT。以下是我的 python 代码中 tesseract 的配置方式:

__tesseract_config_without_dir = "--psm 3 --oem 1 --dpi 300"

TESSERACT_DATA = os.environ.get(
    "TESSDATA_PREFIX", "/usr/share/tesseract-ocr/4.00/tessdata/"
)

__tesseract_config = (
    __tesseract_config_without_dir
    + ' --tessdata-dir "{}"'.format(config.TESSERACT_DATA)
)
Run Code Online (Sandbox Code Playgroud)

所以我想在我的 __tesseract_config 中添加一个像 'OMP_THREAD_LIMIT=1' 这样的选项,但我不知道如何编写它。在 tesseract 文档中,我们只找到以下信息:

“环境变量

OMP_THREAD_LIMIT

如果 tesseract 可执行文件是使用多线程支持构建的,则它通常会使用四个 CPU 核心进行 OCR 处理。虽然这对于单个图像来说可能会更快,但如果主机提供的 CPU 核心少于四个或针对许多图像进行 OCR,则性能会很差。OMP_THREAD_LIMIT=1 时仅使用单个 CPU 内核。”

python multithreading tesseract environment-variables multiprocessing

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

实现抽象事件会从ReSharper中发出"调用多态字段事件"警告

我有一个带有以下抽象事件的抽象基类

public abstract class SignalWrapperBase<T> : IReadOnlySignal<T> {
  public abstract event Action<IReadOnlySignal<T>, Sample<T>> Updated;
  ...
}
Run Code Online (Sandbox Code Playgroud)

在我的实现中,我只是说

public class ValueChangedSignal : SignalWrapperBase<T> {
  public override event Action<IReadOnlySignal<T>, Sample<T>> Updated;
  ...
}
Run Code Online (Sandbox Code Playgroud)

当我在实现中ValueChangedSignal尝试执行以下操作

if (Updated != null) { Updated(this, sample); }
Run Code Online (Sandbox Code Playgroud)

我得到一个ReSharper警告:调用多态字段事件.

我查了推理背后,但它使用的virtual不是abstract在这个例子:

public class Base
{
  public virtual event EventHandler MyEvent;
}

public class Derived : Base
{
  public override event EventHandler MyEvent;
  public void SomeMethod()
  {
    var args = …
Run Code Online (Sandbox Code Playgroud)

c# resharper events abstract-class

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

使用Alt + Enter神奇地导入Pycharm时,如何在不同的行上获取每个python导入?

目前,如果我在另一个模块中未导入的功能上执行Alt + Enter,则只是将其添加到现有的导入行中。

说我有:

from my_package.my_module import do_something

my_module.do_something()
Run Code Online (Sandbox Code Playgroud)

然后我输入:

from my_package.my_module import do_something

do_something()
do_something_else()  # My new line
Run Code Online (Sandbox Code Playgroud)

我喜欢我可以简单地按Alt + Enter do_something_else并将其导入。但是会发生什么:

from my_package.my_module import do_something, do_something_else

do_something()
do_something_else()
Run Code Online (Sandbox Code Playgroud)

虽然我想发生的是:

from my_package.my_module import do_something
from my_package.my_module import do_something_else

do_something()
do_something_else()
Run Code Online (Sandbox Code Playgroud)

我查看了设置,但没有一个看起来是正确的。

这些是我目前所关注的:

编辑器>代码样式> Python

编辑器>常规>代码折叠

编辑器>常规>自动导入

我还能去哪里?似乎应该可以。也许上面的选项之一是我正在寻找的选项,但只是不明白是正确的选择?

python ide pycharm

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

如何“正确”复制一个types.SimpleNamespace对象?

我期望能够做类似的事情:

a = SimpleNamespace(x='test')
b = a.copy()
Run Code Online (Sandbox Code Playgroud)

或许:

b = SimpleNamespace(a)
Run Code Online (Sandbox Code Playgroud)

我当前的解决方案似乎很好用

b = SimpleNamespace(**a.__dict__)
Run Code Online (Sandbox Code Playgroud)

但是它看起来有些古怪。还有更“正确”的方法吗?

我不需要深复制。

python namespaces copy python-3.x

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

对于不需要我使用引号 ("") 进行查询的 PostgreSQL 对象(字段、表等),除了下划线 (_) 之外的替代单词分隔符?

除了不需要我使用引号 ("") 进行查询的 PostgreSQL 对象(字段、表等)的下划线 (_) 之外,是否还有其他单词分隔符?

特殊分隔符将用于根据源表分隔同名字段名称。我不想为此使用模式或不同的表。一些虚拟示例字段名称是:

product_line^product_name
product_line^product_description
service_station^station_name
Run Code Online (Sandbox Code Playgroud)

我已经测试了帽子 (^) 和管道 (|),但它们不起作用。

CREATE TABLE "my^test^table" ( "my^test^field" text )
Run Code Online (Sandbox Code Playgroud)

(我使用 GUI 来构建表,我刚刚注意到您必须引用名称才能创建表/字段。)

这是我必须做的来查询它:

SELECT "my^test^field" FROM "my^test^table"
Run Code Online (Sandbox Code Playgroud)

...虽然我想做:

SELECT my^test^field FROM my^test^table
Run Code Online (Sandbox Code Playgroud)

...如果我使用了下划线 (_),这是可能的:

SELECT my_test_field FROM my_test_table
Run Code Online (Sandbox Code Playgroud)

除了下划线 (_) 之外,还有其他可以使用的分隔符吗?最好是非字母数字的普通 ASCII 字符。

编辑:我目前最好的选择是使用双下划线。但是,我更喜欢别的东西。

postgresql delimiter

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

如何用matplotlib/python绘制ROC曲线

我想绘制一个roc曲线python,matplotlib并希望像这样显示:

在此输入图像描述

我找不到像这样做的功能.

有一个简单的方法吗?

matplotlib python-3.x roc

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

为什么在 docker (ubuntu:18.04) 中运行长时间运行的 postgres 查询需要 `psycopg2.connect(...)` 中的 `keepalives` 参数?

我们刚刚过渡到使用 Docker 进行开发并正在使用该ubuntu:18.04镜像。我们注意到psycopg2几分钟后使用的查询失败了。这个答案使用以下参数解决了问题keepalives

self.db = pg.connect(
    dbname=config.db_name,
    user=config.db_user,
    password=config.db_password,
    host=config.db_host,
    port=config.db_port,
    keepalives=1,
    keepalives_idle=30,
    keepalives_interval=10,
    keepalives_count=5
)
Run Code Online (Sandbox Code Playgroud)

这对我们也有效,但为什么会有效呢?psycopg2 文档没有深入了解参数的作用,但是,这个第三方文档和这个 postgres文档都做了。

问题是,docker 环境与主机环境有何不同,导致需要这些非默认设置?它们也可以在标准 Ubuntu 18.04 环境中工作,但不能在 docker 中工作。我希望我们可以重新配置我们的 docker 映像,以便首先不需要这些非标准参数。


Postgres 版本:PostgreSQL 13.4 (Ubuntu 13.4-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit

psycopg2版本:2.8.5

主机操作系统:Windows 10

Docker 镜像操作系统:Ubuntu 18:04

postgresql psycopg2 docker

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