小编cap*_*aps的帖子

如何使用boost :: python创建和使用Python对象的实例

假设我有一个像这样的Python类:

class MyPythonClass:
    def Func1(self, param):
        return
    def Func2(self, strParam):
        return strParam
Run Code Online (Sandbox Code Playgroud)

如果我想在我的C ++代码中嵌入包含该类的Python脚本,请通过我的C ++代码创建该对象的实例,然后在该python对象上调用成员,我该如何处理?

我认为应该是这样的:

namespace python = boost::python;
python::object main = python::import("main");
python::object mainNamespace = main.attr("__dict__");
python::object script = python::exec_file(path_to_my_script, mainNamespace);
python::object foo = mainNamespace.attr("MyPythonClass")();
python::str func2return = foo.attr("Func2")("hola");
assert(func2return == "hola");
Run Code Online (Sandbox Code Playgroud)

但是我尝试过的此代码的许多变体都没有用。为了做到这一点,我需要在代码中注入什么魔力?

c++ boost boost-python

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

std :: atomic_store和std :: atomic_exchange不交换

en.cppreference.com,std::atomic_exchangestd::atomic_store相当于一个线程安全的std::swap.但这不是我用g ++或clang ++获得的行为.

问题住在coliru上.(见下文)

虽然它打印出来:

std::atomic_store

a: 0x1ed2c30    0
b: 0x1ed2c50    1

a: 0x1ed2c50    1
b: 0x1ed2c50    1

std::atomic_exchange

a: 0x1ed2c50    0
b: 0x1ed2c30    1

a: 0x1ed2c30    1
b: 0x1ed2c30    1
Run Code Online (Sandbox Code Playgroud)

为什么是这样?难道我做错了什么?我误读了文档吗?

代码清单

#include <iostream>
#include <memory>

int main()
{
    {
        std::cout << "std::atomic_store\n\n";
        auto a = std::make_shared<int>(0);
        auto b = std::make_shared<int>(1);

        std::cout
        << "a: " << a.get() << '\t' << *a << '\n'
        << "b: " << b.get() << '\t' …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++11 c++14

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

许多个人更新与一个大型更新的速度

我有一个带有主ID列(自动索引),两个子ID列(也已索引)和12个类型为geometry(Polygon)的列的表。如果我要更新此表上的〜200万行,那么运行〜200万条单独的更新语句(例如,

update TABLE_NAME set ( COLUMNS ) = ( VALUES ) where ID_COLUMN = NEXT_ID
Run Code Online (Sandbox Code Playgroud)

还是更快地执行少量的较大更新语句,例如此答案

update TABLE_NAME as update_t set
COLUMNS = new_vals.COLUMNS
from (values
(id, polygon1val, polygon2val, ... polygon12val),   /* row 1 */
(id, polygon1val, polygon2val, ... polygon12val),   /* row 2 */
...                                                 /* ...   */
(id, polygon1val, polygon2val, ... polygon12val)    /* row N */
) as new_vals( COLUMNS )
where new_vals.id = update_t.id
Run Code Online (Sandbox Code Playgroud)

如果是后者,您对什么N可能有什么建议?是N=〜2mil,还是较小的子集(我会重复说,直到全部完成)?

编辑:显然,在前一种情况下,我将使用准备好的语句。但是我也想知道,在后一种情况下,尝试使用准备好的语句是否有任何好处?

我正在使用PostgreSQL 9.2。

sql postgresql

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

在jqTree中动态地将HTML/CSS ID分配给节点

在jqTree中,将以下代码放在HTML文件顶部的JavaScript块中将生成一个小树视图.

var data = [
{
    label: 'node1',
    children: [
        { label: 'child1' },
        { label: 'child2' }
    ]
},
{
    label: 'node2',
    children: [
        { label: 'child3' }
    ]
}
];
$(function() {
    $('#tree').tree({
        data: data
    });
});
Run Code Online (Sandbox Code Playgroud)

到目前为止,这对我来说非常有用.但是,我希望能够在HTML/CSS中为每个节点和/或子节点提供一个id,以便我可以根据应用程序中的状态更改每个节点/子节点的颜色.树视图的HTML是在$(function())调用中动态创建的,因此我可以在调试器或元素检查器中查看它,但我无法真正编辑它.

关于如何解决这个问题的任何建议?

-

jqTree有一种方法可以将id分配给节点作为数据声明的一部分,如下所示:

var $tree = $('#tree1');
var data = [
    { id: 10, name: 'n1' },
    { id: 11, name: 'n2' }
];

$tree.tree({
    data: data
});
var node = $tree.tree('getNodeById', 10);
Run Code Online (Sandbox Code Playgroud)

但是,似乎这些ID不是HTML ID,因为它们没有出现在我的元素检查中.

我猜测有一个JScript函数可以让我修改getNodeById函数返回的节点给它一个HTML id,但如果有人能想到更简单或更直接的方式我更喜欢这个.虽然我当前的设置将节点硬编码到我的文件中,但我最终会动态生成它们,可能使用JSON,因此使用它的解决方案会很棒.

javascript jquery jqtree

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

如何从地理位置选择纬度或经度

在Postgresql中,您可以ST_TEXTFROMGEOGRAPHY在查询中使用以文本形式返回地理点.然后,无论读取什么,查询都可以解析文本以提取地理点的纬度和经度.

使用几何时,可以使用ST_XST_Y分别将几何点的x和y作为单独的列返回.我没有找到类似的地理点功能.

从地理位置返回两列(纬度列和经度列)而不是将地理位置作为单个列返回的最简单方法是什么?

postgresql postgis postgresql-9.3

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

如何调用保存在string中的函数

如果我有:

void print_1();

void print_2();

void print_3();
Run Code Online (Sandbox Code Playgroud)

我有另一个函数valid();,它返回一个整数

我想宣布一个 string = "print_x());"

我想要替换x为返回的值valid();

例如,如果返回的值valid();3

         =====> the string will be ("print_3();")
Run Code Online (Sandbox Code Playgroud)

然后我想调用保存在字符串变量中的函数,我想这样调用:

print_3();
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点

c++

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