小编Arn*_*rne的帖子

用c ++快速读取文本文件

我目前正在用c ++编写一个程序,其中包括阅读大量的大文本文件.每行有~400.000行,极端情况下每行有4000或更多字符.仅供测试,我使用ifstream和cplusplus.com提供的实现读取其中一个文件.花了大约60秒,这太长了.现在我想知道,有没有一种直接的方法来提高阅读速度?

编辑:我使用的代码或多或少是这样的:

string tmpString;
ifstream txtFile(path);
if(txtFile.is_open())
{
    while(txtFile.good())
    {
        m_numLines++;
        getline(txtFile, tmpString);
    }
    txtFile.close();
}
Run Code Online (Sandbox Code Playgroud)

编辑2:我读的文件只有82 MB大.我主要说它可以达到4000,因为我认为可能有必要知道为了做缓冲.

编辑3:谢谢大家的答案,但考虑到我的问题似乎没有太大的改进空间.我必须使用readline,因为我想计算行数.将ifstream实例化为二进制文件也不会使读取速度更快.我将尝试尽可能地并行化它,至少应该起作用.

编辑4:显然我可以做一些事情.非常感谢你花了这么多时间,我非常感激!=)

c++ io performance ifstream

58
推荐指数
4
解决办法
6万
查看次数

如何在嵌入eclipse的maven存储库中安装jar?

我的目标是在Maven存储库中安装一个jar文件.这篇文章解释了如何使用MVN进行安装.

但是因为我在Eclipse中嵌入了Maven,所以我不知道在哪里运行以下命令:

mvn install:install-file  -Dfile=C:\lib\rest\WadlGenerator.jar \
                          -DgroupId=foo.in.shop.rest.wadl \
                          -DartifactId=WadlGenerator \
                          -Dversion=1.0 \
                          -Dpackaging=jar \
                          -DlocalRepositoryPath=C:\maven\repositories\internal
Run Code Online (Sandbox Code Playgroud)

简而言之:如何识别Eclipse嵌入式Maven的Maven安装目录?

java java-ee maven

23
推荐指数
2
解决办法
6万
查看次数

如何在python进程中限制内存使用

我在具有16GB Ram和64位操作系统的Linux机器上运行Python 2.7.我写的一个python脚本可以将太多的数据加载到内存中,这会使机器速度降低到我甚至无法再杀死进程的程度.

虽然我可以通过调用来限制内存:

ulimit -v 12000000
Run Code Online (Sandbox Code Playgroud)

在运行脚本之前的shell中,我想在脚本本身中包含一个限制选项.在我看的每个地方,该resource模块都被认为具有与之相同的能力ulimit.但是打电话:

import resource
_, hard = resource.getrlimit(resource.RLIMIT_DATA)
resource.setrlimit(resource.RLIMIT_DATA, (12000, hard))
Run Code Online (Sandbox Code Playgroud)

在我的脚本开头做什么都没有.即使设置低至12000的值也从未使过程崩溃.我尝试了相同的RLIMIT_STACK,同样的结果.奇怪的是,打电话:

import subprocess
subprocess.call('ulimit -v 12000', shell=True)
Run Code Online (Sandbox Code Playgroud)

什么都不做.

我究竟做错了什么?我在网上找不到任何实际的用法示例.


编辑:对于任何好奇的人,使用subprocess.call不起作用,因为它创建一个(惊喜,惊喜!)新进程,它独立于当前python程序运行的进程.

python linux memory ulimit

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

验证python数据类中的详细类型

Python 3.7即将到来,我想测试一些奇特的新dataclass+打字功能.使用本机类型和typing模块中的类型,可以很容易地获得正确工作的提示:

>>> import dataclasses
>>> import typing as ty
>>> 
... @dataclasses.dataclass
... class Structure:
...     a_str: str
...     a_str_list: ty.List[str]
...
>>> my_struct = Structure(a_str='test', a_str_list=['t', 'e', 's', 't'])
>>> my_struct.a_str_list[0].  # IDE suggests all the string methods :)
Run Code Online (Sandbox Code Playgroud)

但是我想要尝试的另一件事是在运行时强制类型提示作为条件,即不应该dataclass存在具有不正确类型的类型.它可以很好地实现__post_init__:

>>> @dataclasses.dataclass
... class Structure:
...     a_str: str
...     a_str_list: ty.List[str]
...     
...     def validate(self):
...         ret = True
...         for field_name, field_def in self.__dataclass_fields__.items():
...             actual_type = type(getattr(self, …
Run Code Online (Sandbox Code Playgroud)

python typing python-dataclasses

18
推荐指数
2
解决办法
6707
查看次数

在setup.py脚本中安装nltk数据

我在项目中使用带有wordnet的NLTK.我在我的PC上手动安装,使用pip: pip3 install nltk --user在终端中,然后nltk.download()在python shell中下载wordnet.

我想用setup.py文件来创建它们,但我不知道安装wordnet的好方法.

目前,我在调用之后有这段代码setup.py("nltk"在setup调用列表中"nltk"):

import sys
if 'install' in sys.argv:
    import nltk
    nltk.download("wordnet")
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python nltk wordnet setup.py python-packaging

14
推荐指数
2
解决办法
2124
查看次数

将pytest与src图层一起使用

pytest建议包含一个额外的目录来分隔项目中的源代码:

my_package
??? src  # <-- no __init__.py on this layer
?   ??? my_package
?       ??? __init__.py
?       ??? util_module
?           ??? __init__.py
?           ??? utils.py
??? tests
    ??? __init__.py
    ??? test_util_module
        ??? __init__.py
        ??? test_utils.py
Run Code Online (Sandbox Code Playgroud)

可悲的是,他们没有说1关于测试代码中的导入应该如何在这种情况下工作,这对于我的IDE在这个天真的例子2中工作得很好,但是导致pytest出现以下错误:

my_package $ pytest

====================== test session starts ======================
platform linux -- Python 3.6.4, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: /home/user/workspace/my_package, inifile:
collected 0 items / 1 errors     

============================ ERRORS =============================
___ ERROR collecting tests/test_util_module/test_utils.py ___
ImportError while importing test …
Run Code Online (Sandbox Code Playgroud)

python pytest

13
推荐指数
2
解决办法
2036
查看次数

使用仅在运行时已知的字段名称更新数据类中的字段

我想更新数据类中的字段,但我仅在运行时而不是在开发期间知道字段名称。

#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-

from dataclasses import dataclass # I use the backport to 3.6

@dataclass
class Template:
    number: int = 0
    name: str = "^NAME^"


oneInstance = Template()
print(oneInstance) # Template(number=0, name='^NAME^')
# If I know the variable name during development, I can do this:
oneInstance.number=77
# I get this from a file during runtime:
para = {'name': 'Jones'}
mykey = 'name'
# Therefore, I used exec:
ExpToEval = "oneInstance." + mykey + ' = …
Run Code Online (Sandbox Code Playgroud)

python python-dataclasses

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

Python 数据类:省略 asdict 中的字段

我开始大量使用 python dataclasses 模块并发现它非常有用。我特别喜欢可以在每个字段上设置的标志,允许切换比较、初始化等。

然而,我经常发现,有一个领域我希望从班级的沉迷行为中省略。在某些情况下,使用 dict_factory 参数可能会实现这一点,但有时,某个字段会导致 asdict 函数在通过使用 dict_factory 省略该字段之前引发异常。

其他人可以建议一种干净的方法来做到这一点吗?添加到数据类模块中不是一个有用的附加标志吗?

python python-3.x python-dataclasses

10
推荐指数
1
解决办法
5583
查看次数

如何在 fastapi 响应中包含非 pydantic 类?

我想将自定义类包含到路线的响应中。我主要pydantic.BaseModel在应用程序中使用嵌套,因此最好返回整个内容,而无需编写从内部数据表示到路由返回内容的翻译。

只要继承自此的所有内容pydantic.BaseModel都是微不足道的,但我在后端使用的类Foo无法做到这一点,而且我也无法为此目的对其进行子类化。我可以以某种方式fastapi以接受该类的定义的方式鸭子类型吗?我现在所拥有的基本上是这样的:

主要.py

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Foo:
    """Foo holds data and can't inherit from `pydantic.BaseModel`."""
    def __init__(self, x: int):
        self.x = x


class Response(BaseModel):
    foo: Foo
    # plus some more stuff that doesn't matter right now because it works


@app.get("/", response_model=Response)
def root():
    return Response(foo=Foo(1))


if __name__ == '__main__':
    import uvicorn
    uvicorn.run("main:app")  # RuntimeError
Run Code Online (Sandbox Code Playgroud)

python pydantic fastapi

10
推荐指数
1
解决办法
6851
查看次数

如何将git项目从使用master作为默认分支迁移到main?

我是 github/gitlab 上托管的一个项目的维护者,该项目有许多贡献者。我想从 usingmaster作为默认分支迁移到main. 我该如何做到这一点而不搞砸?

我读过一些关于该主题的博客文章,但更喜欢在 StackOverflow 上进行讨论,其中评论可能会指出一个人可能忽略的问题。

git github gitlab

8
推荐指数
1
解决办法
1036
查看次数