小编ale*_*kuk的帖子

变量的文档字符串

是否可以将docstring用于普通变量?例如,我有一个名为的模块t

def f():
    """f"""

l = lambda x: x
"""l"""
Run Code Online (Sandbox Code Playgroud)

而我呢

>>> import t
>>> t.f.__doc__
'f'
Run Code Online (Sandbox Code Playgroud)

>>> t.l.__doc__
>>> 
Run Code Online (Sandbox Code Playgroud)

示例类似于PEP 258(搜索"this is g").

python

55
推荐指数
7
解决办法
3万
查看次数

使用SWIG的Perl中的STL映射

这与我在SWIG邮件列表上的问题重复.

我试图在我的SWIG绑定中使用stl容器.除了在Perl中进行stl映射处理外,一切都运行良好.在C++方面,我有

std::map<std::string, std::string> TryMap(const std::map<std::string, std::string> &map) {
  std::map<std::string, std::string> modified(map);
  modified["7"] = "!";
  return modified;
}
Run Code Online (Sandbox Code Playgroud)

SWIG配置看起来像这样

%module stl

%include "std_string.i"

%include "std_map.i"
%template(StringStringMap) std::map<std::string, std::string>;

%{
  #include "stl.h"
%}

%include "stl.h"
Run Code Online (Sandbox Code Playgroud)

在我的Python脚本中,我可以这样调用TryMap

print dict(stl.TryMap({'a': '4'}))
Run Code Online (Sandbox Code Playgroud)

并获得美丽的输出

{'a': '4', '7': '!'}
Run Code Online (Sandbox Code Playgroud)

但在Perl我打电话

print Dumper stl::TryMap({'a' => '4'});
Run Code Online (Sandbox Code Playgroud)

并得到一个错误

TypeError in method 'TryMap', argument 1 of type 'std::map< std::string,std::string > const &' at perl.pl line 7.
Run Code Online (Sandbox Code Playgroud)

我实际上可以做类似的事情

my $map = stl::TryMap(stl::StringStringMap->new());
print $map->get('7');
Run Code Online (Sandbox Code Playgroud)

并得到'!',但这不是一个选项,因为有很多遗留代码使用"TryMap",期望普通的Perl哈希作为其输出.

我相信有一种方法可以解决这个问题,因为如果我使用stl向量和字符串而不是map,SWIG可以很好地解决Python中的这个特殊问题,即使在Perl中也是如此.

有没有办法在SWIG中使用Perl处理stl映射?我正在使用最新的SWIG 2.0.7 …

perl swig

32
推荐指数
1
解决办法
1834
查看次数

如何使我的SWIG扩展模块与Pickle一起使用?

我有一个Python的扩展模块,它使用SWIG作为包装器,我尝试用Pickle序列化它,我失败了=)

  1. 如果有人有可以腌制的SWIG扩展源,我很乐意看到它!
  2. 好像我应该__reduce_ex__在我的C++代码中实现方法.有没有人有例子__reduce_ex__有类似的Stackoverflow问题,但它省略了manager_constructor规范和实现.

python swig pickle

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

为什么"2010年"=〜/([0-4]*)/会导致$ 1中的空字符串?

如果我跑

"Year 2010" =~ /([0-4]*)/;
print $1;
Run Code Online (Sandbox Code Playgroud)

我得到空字符串.但

"Year 2010" =~ /([0-4]+)/;
print $1;
Run Code Online (Sandbox Code Playgroud)

输出"2010".为什么?

regex perl

10
推荐指数
4
解决办法
306
查看次数

如何在Perl子例程中使用$ a和$ b

我想在我的无限二进制函数中使用$a$b变量,就像它完成sort {$a <=> $b} (1, 2, 3)但我无法弄清楚为什么代码

#!/usr/bin/env perl
use strict;
use warnings;

Foo::Bar(sub { $a + $b });

package Foo;
sub Bar {
    my ($function) = @_; 

    for my $i (1, 2, 3) {
        local ($a, $b) = ($i, $i);
        print $function->() . "\n";
    }
}    
Run Code Online (Sandbox Code Playgroud)

不起作用.而

#!/usr/bin/env perl
use strict;
use warnings;

Foo::Bar(sub { $_ });

package Foo;
sub Bar {
    my ($function) = @_; 

    for my $i (1, 2, 3) { …
Run Code Online (Sandbox Code Playgroud)

perl scope global-variables special-variables

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

MongoDB中的插入率不稳定

我有一个每秒可以生成20 000条记录的过程(记录大小~30Kb).我试图尽可能快地将它们插入到MongoDB的单个实例中.但我每秒得到约1500次插入,不稳定的速率范围从1000次插入到每秒2000次插入.问题是原因是什么以及如何解决?:)这是mongostat2.5小时的数据:

建立

我在云中运行实例,包括8核,16Gb RAM,150Gb硬盘,Ubuntu 18.04,MongoDB 4.0 官方 docker 镜像.在同一个实例上运行2个工作程序,每个工作程序每秒生成10 000条记录,并将insert_many它们分成每个块的MongoDB 100条记录.每个记录2个集合之间划分casesdocs,docs使用zlib压缩.cases记录平均大小约为1Kb.随机记录为例:

{'info': {'judge': '?????? ????? ??????????', 'decision': '???????? ? ???????????? ?? ????? ????????????', 'entry_date': datetime.datetime(2017, 1, 1, 0, 0), 'number': '12-48/2017 (12-413/2016;)', 'decision_date': datetime.datetime(2017, 2, 9, 0, 0)}, 'acts': [{'doc': ObjectId('5c3c76543d495a000c97243b'), 'type': '???????'}], '_id': ObjectId('5c3c76543d495a000c97243a'), 'sides': [{'name': '???????? ?. ?.', 'articles': '????: ??. 5.27.1 ?.4'}], 'history': [{'timestamp': datetime.datetime(2017, 1, 1, 15, 6), 'type': '????????? ???????? ? …
Run Code Online (Sandbox Code Playgroud)

crud mongodb nosql

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

如何实现Perl中的map函数?

mapPerl中的函数是用Perl编写的吗?我只是无法弄清楚如何实现它.这是我的尝试:

use Data::Dumper;

sub Map {
    my ($function, $sequence) = @_;

    my @result;
    foreach my $item (@$sequence) {
        my $_ = $item;
        push @result, $function->($item);
    }
    return @result
}

my @sample = qw(1 2 3 4 5);
print Dumper Map(sub { $_ * $_ }, \@sample);
print Dumper map({ $_ * $_ } @sample);
Run Code Online (Sandbox Code Playgroud)

$_in $function是未定义的,但是如何map克服这个?

perl map

3
推荐指数
2
解决办法
1207
查看次数

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

字数统计程序有什么问题?

我的测试中有一个问题:

计算文件中行数和单词数的程序有什么问题?

open F, $ARGV[0] || die $!;
my @lines = <F>;
my @words = map {split /\s/} @lines;
printf "%8d %8d\n", scalar(@lines), scalar(@words);
close(F); 
Run Code Online (Sandbox Code Playgroud)

我的推测是:

  1. 如果文件不存在,程序将不会告诉我们.
  2. 如果文件中有标点符号,程序将对它们进行计数,例如,在

    abc cba
    , , ,dce
    
    Run Code Online (Sandbox Code Playgroud)

    将是五个字,但另一方面wc输出相同的结果,因此它可能被认为是正确的行为.

  3. 如果F是一个大文件,最好迭代线而不是将其转储到lines数组中.

你有什么不那么琐碎的想法吗?

testing perl count cpu-word

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