小编Sha*_*ger的帖子

Python:如何内存映射(mmap)gzip 压缩文件

我的要求是读取 gzip 压缩文件,由于这些文件很大,我想对其进行内存映射以获得 I/O 性能。

我尝试了以下代码:

import gzip
import mmap
with gzip.open("/home/test.json.gz", mode="r") as f:
    with mmap.mmap(f.fileno(), length=0, access=mmap.ACCESS_READ) as f_mmap:
        print(f_mmap.read())
Run Code Online (Sandbox Code Playgroud)

上面代码中的语句print打印以下一系列十六进制作为输出:

b'\x1f\x8b
Run Code Online (Sandbox Code Playgroud)

当我尝试从上面的代码中删除 时mmap,我看到了正确的预期结果。

您能否提供有关如何内存映射 gzip 压缩文件的建议?

python gzip mmap python-3.x

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

为什么我的 int 输出与预期不同?

我的bin倒数第二行显示了类似的内容,3282692812当它意味着不同时。其他都很好,我尝试过在网上搜索,但找不到任何相关信息。

string a;
int amount;
cout << "1-10k 2-2k 3-1k: ";
cin >> a;
cout << "\n";
cout << "How many numbers do you want to be generated?: ";
cin >> amount;
cout << "\n";
long bin = 0;



if (int(a) = 1)
{
    bin = 60457811425;
}
else if (a == 2)
{
    bin = 60457811474;
}
else if (a == 3)
{
    bin = 6045781165;
}

for (int i = 0; i < amount; …
Run Code Online (Sandbox Code Playgroud)

c++ integer

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

编译器如何将值写入此构造中该对的第二个值?

map<int,int> a;
pair<std::map<int,int>::iterator ,bool> f;
f=(a.insert({0,0}));
cout<<f.second;
Run Code Online (Sandbox Code Playgroud)

为什么输出1呢?

对于该对中的任何值,它始终输出 1

c++ stdmap std-pair

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

for loop answer不会停止重复

我有这个程序:

print('~Find and Replace~\n')

phrase = input('Enter a phrase:')
find = input('Enter a letter to find:')
end = input('Enter a letter to replace:')

for j in phrase:
    j = phrase.count(find)
    print(j)
Run Code Online (Sandbox Code Playgroud)

它出来是这样的:

~Find and Replace~

Enter a phrase:pythop
Enter a letter to find:p
Enter a letter to replace:x
2
2
2
2
2
2
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使用for循环只打印一次?

python python-3.x

-1
推荐指数
1
解决办法
49
查看次数

C++`srand()`函数产生一个模式?

新的C++和下面的初学者的教程在这里.请参阅标题为C++中的随机数的部分.准确使用给出的代码:

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main () {
   int i,j;

   // set the seed
   srand( (unsigned)time( NULL ) );

   /* generate 10  random numbers. */
   for( i = 0; i < 10; i++ ) {
      // generate actual random number
      j = rand();
      cout <<" Random Number : " << j << endl;
   }

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我播种srand()time()(编译g++)等所产生的结果应该是完全随机的.但是,这是我得到的结果:

$ ./a.out
 Random Number : 1028986599 …
Run Code Online (Sandbox Code Playgroud)

c++ random srand

-1
推荐指数
1
解决办法
96
查看次数

为什么在 python 3.8 中只使用位置参数?

3.8 中引入了新的“仅位置参数”语法。

来自文档中的仅位置参数

有新语法 ( /) 指示某些函数参数必须按位置指定(即,不能用作关键字参数)。这与help()for 在 C 中实现的函数(由 Larry Hastings 的Argument Clinic工具产生)所示的符号相同。

来自http://northtexasroofing.net/article/10509084.shtml

现在pow(2, 10)pow(2, 10, 17)是有效的调用,但是pow(x=2, y=10)pow(2, 10, z=17)是无效的。


我的问题是,为什么要使用这种语法?

为什么它对代码的用户更好?

在我看来,这让用户更难指定他们的论点的实际含义,如果他们愿意的话。

为什么要让用户更难?

我显然错过了一些东西。

python python-3.x python-3.8 pep570

-1
推荐指数
1
解决办法
1451
查看次数

标签 统计

c++ ×3

python ×3

python-3.x ×3

gzip ×1

integer ×1

mmap ×1

pep570 ×1

python-3.8 ×1

random ×1

srand ×1

std-pair ×1

stdmap ×1