小编Cor*_*mer的帖子

带连字符的python关键字参数

我有一个关键字参数函数:

def f1(**kw):
    for key,val in kw.iteritems():
        print "key=%s val=%s" % (key,val)

f1(Attr1 = "Val1", Attr2 = "Val2")  # works fine.

f1(Attr1-SubAttr = "Val1", Attr2 = "Val2")  # complains about keyword being an expression.

f1("Attr1-SubAttr" = "Val1", Attr2 = "Val2")  # doesn't work either.
Run Code Online (Sandbox Code Playgroud)

如何使用连字符传递关键字?我无法控制这些关键字,因为我正在从现有的旧数据库中解析这些关键字.

谢谢!-kumar

python arguments keyword hyphen

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

为什么const变量不需要在C中初始化?

const必须初始化C++中的变量意味着uninitialized const variable不可能并且它是编译器错误.但为什么C语言也不一样呢?考虑以下编译精细C的程序:

#include <stdio.h>
int main()
{
    const int a;
}
Run Code Online (Sandbox Code Playgroud)

允许的原因是uninitialized const什么?如果C也遵循与C++相同的规则,那会不会很好?是否由于性能问题,每次调用函数并初始化需要时间时,需要初始化本地const变量?

c initialization const

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

使用SQLAlchemy在现有表上的简单SELECT语句

在互联网上没有任何地方存在一个SELECT关于SQLAlchemy 1.0 的简单语句的简单的几行教程.

假设我已经建立了数据库连接create_engine(),并且我的数据库表已经存在,我想知道如何执行以下查询:

select
    name,
    age
from
    users
where
    name = 'joe'
    and
    age = 100
Run Code Online (Sandbox Code Playgroud)

python mysql select sqlalchemy

9
推荐指数
2
解决办法
5156
查看次数

使用以下has_member函数,SFINAE无法正常工作?

我正在尝试Walter Brown的TMP演讲中的例子,我正在尝试让他的has_member实现工作.

然而,实现似乎错误地返回true,这使我相信有一些我不理解的SFINAE的细节.

#include <iostream>
#include <type_traits>

template <class ...>
using void_t = void;

template <class, class = void>
struct has_type_member: std::false_type {};

template <class T> 
struct has_type_member<T, void_t<typename T::type> >: std::true_type {};

struct FooWithType
{
    typedef int type;
};

struct FooNoType 
{
};

int main()
{
    std::cout << "Does FooWithType have type member? " << 
        (has_type_member<FooWithType>() ? "YES" : "NO") << "\n";

    std::cout << "Does FooNoType have type member? " << 
        (has_type_member<FooNoType>() ? "YES" : …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae template-specialization c++11

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

`{...}`在python变量的打印输出中是什么意思?

有人发布了这个有趣的公式,我在Python 3控制台中试了一下:

>>> (a, b) = a[b] = {}, 5
>>> a
{5: ({...}, 5)}
Run Code Online (Sandbox Code Playgroud)

虽然这里有很多需要解压缩的东西,但是我不理解的东西(以及有趣的角色配方的语义似乎特别难以搜索){...}在这种背景下的意义是什么?改变上面的一点:

>>> (a, b) = a[b] = {'x':1}, 5
>>> a
{5: ({...}, 5), 'x': 1}
Run Code Online (Sandbox Code Playgroud)

这是第二个输出让我感到困惑:我本来期望它{...}会被改变,但我最接近的猜测, 5暗示一个元组,其中第一个元素以某种方式未定义?那是什么{...}意思?如果是这样,这是我在Python中的一个新类型,我希望有一个名称,以便我可以了解更多.

python ellipsis

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

函数属性是否继承?

如果我有一个带有属性的虚函数

[[nodiscard]]
virtual bool some_function() = 0;
Run Code Online (Sandbox Code Playgroud)

该属性是否隐式应用于该函数的覆盖?

bool some_function() override;
Run Code Online (Sandbox Code Playgroud)

或者我是否还需要该属性?

[[nodiscard]]
bool some_function() override;
Run Code Online (Sandbox Code Playgroud)

c++ attributes c++17

8
推荐指数
2
解决办法
389
查看次数

Visual Studio 2013优化标志(/ O2 vs/Ox)

我一直在尝试通过MSDN页面阅读各种优化标志.

我们目前的大多数项目都设置/O2为"最大化速度".

我的困惑是这究竟是什么意思.关于/O2国旗,下列哪一项陈述更接近真实?

  1. 优化速度和大小的代码,但是如果存在争用优选速度优化
  2. 针对速度优化代码,不针对大小进行优化.

我提出我们应该使用/Ox旗帜的论点,但那时我认为选项2是真的.

我基本上被告知"我们不会改变/O2,/Ox除非有人有确凿的证据证明我们需要这样做".

所以我的问题是/O2仍然执行内存优化?例如,返回值优化,复制省略等.从切换/O2/Ox

c++ optimization performance compiler-optimization visual-studio-2013

7
推荐指数
2
解决办法
5849
查看次数

c++ 如何优雅地将 c++17 并行执行与计算整数的 for 循环一起使用?

我可以

std::vector<int> a;
a.reserve(1000);
for(int i=0; i<1000; i++)
    a.push_back(i);
std::for_each(std::execution::par_unseq, std::begin(a), std::end(a), [&](int i) {
  ... do something based on i ...
});
Run Code Online (Sandbox Code Playgroud)

但是有没有更优雅的方法来创建 for(int i=0; i<n; i++) 的并行版本,它不需要我先用升序整数填充向量?

c++ parallel-processing c++17

7
推荐指数
2
解决办法
2318
查看次数

信号处理pika/python

pika.BlockingConnection在消费者中使用,为每条消息执行一些任务.我还添加了信号处理功能,以便消费者在完成所有任务后正常死亡.

在处理消息并收到信号时,我只是"signal received"从函数中获取,但代码不会退出.所以,我决定检查在回调函数结束时收到的信号.问题是,我检查信号的次数是多少,因为此代码中还有更多的功能.是否有更好的处理信号的方法而不会过度使用东西?

import signal
import sys
import pika
from time import sleep

received_signal = False
all_over = False

def signal_handler(signal, frame):
    global received_signal
    print "signal received"
    received_signal = True

signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)

mq_connection = pika.BlockingConnection(pika.ConnectionParameters(my_mq_server, virtual_host='test'))
mq_channel = mq_connection.channel()

def callback(ch, method, properties, body):
    if received_signal:
        print "Exiting, as a kill signal is already received"
        exit(0)
    print body
    sleep(50)
    mq_channel.basic_ack(delivery_tag=method.delivery_tag)
    print "Message consumption complete"

    if received_signal:
        print "Exiting, as a kill signal is already …
Run Code Online (Sandbox Code Playgroud)

python signals signal-handling pika

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

在Memmapped数组上执行操作的正确方法

我很困惑的操作看起来像这样.我一直在常规的Numpy阵列上做这个,但是在一个memmap中我想知道它是如何工作的.

arr2 = np.argsort(np.argsort(arr1,axis=0),axis=0) / float(len(arr1)) * 100
#This is basically to calculate Percentile rank of each value wrt the entire column
Run Code Online (Sandbox Code Playgroud)

这是我在普通的numpy数组上使用的.

现在.考虑到arr1 现在是一个20GB的memmapped数组,我有几个问题:

1:

arr2 = np.argsort(np.argsort(arr1,axis=0),axis=0) / float(len(arr1)) * 100 
Run Code Online (Sandbox Code Playgroud)

arr2将是一个常规的numpy数组,我假设?所以执行这个将是灾难性的记忆明智吗?

考虑到我现在已经创建arr2了一个正确大小的Memmapped数组(用全零填充).

2:

arr2 = np.argsort(np.argsort(arr1,axis=0),axis=0) / float(len(arr1)) * 100
Run Code Online (Sandbox Code Playgroud)

VS

arr2[:] = np.argsort(np.argsort(arr1,axis=0),axis=0) / float(len(arr1)) * 100
Run Code Online (Sandbox Code Playgroud)

有什么不同?

3.

单独计算np.argsort作为临时memmapped数组和np.argsort(np.argsort)临时memmapped数组然后执行操作会更高效吗?由于20GB阵列的argsort数组本身就相当庞大!

我认为这些问题将帮助我澄清python中memmapped数组的内部工作原理!

谢谢...

python numpy

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