小编Boc*_*iek的帖子

Cython作为Python到C转换器的示例程序

我在这里这里发现可以使用Cython将Python转换为C,但我找不到任何一步一步的例子.假设我有一个简单的功能:

foo.pyx

cdef void foo(double* x):
   x[0] = 0.0
Run Code Online (Sandbox Code Playgroud)

setup.py

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("foo.pyx")
)
Run Code Online (Sandbox Code Playgroud)

然后我运行:python setup.py build_ext --inplace来获取foo.c和foo.so文件(以及构建目录).好吧,我想在main.c中使用翻译(我希望)的foo函数.我应该把什么放入main.c文件以及如何编译它以便能够使用foo函数?我正在使用gcc.

c python cython

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

Apache Tika排除了一些html标签

我正在通过python测试Apache Tika REST Api 以解析HTML文件。一切正常,只有一件事。<noscript>标签内部也被解析为文本,并且我的文本中包含一些CSS样式内容,这是不可取的。同样,的主体也 <div style="display:none">被提取。有没有一种方法可以在Tika rest API中将某些html标签列入黑名单?

python apache-tika

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

带有数据类型的结构名称后面的冒号

在阅读一些 boost 库源代码时我遇到了这部分

template< class Value = double >
struct rk4_coefficients_a3 : boost::array< Value , 3 >
{
    rk4_coefficients_a3( void )
        {
    (*this)[0] = static_cast<Value>(0);
    (*this)[1] = static_cast<Value>(0);
    (*this)[2] = static_cast<Value>(1);
        }
};
Run Code Online (Sandbox Code Playgroud)

结构体名称后面的冒号 (:) 是什么意思?

c++11

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

单结构调整方法以适应不同的数据类型

我有四个非常相似的结构(很简单来说明问题)参数的类型不同

using state_type = std::vector<double>;

struct foo {
    double _x;
    double _y;

    foo (double x, double y) : _x{x}, _y{y} {}

    void operator() (const state_type &v, state_type &u) const {
       for (auto i=0; i<v.size(); i++)
          u[i] = x * v[i] + y * v[i];
    }
}

struct foo {
    state_type _x;
    double _y;

    foo (state_type x, double y) : _x{x}, _y{y} {}

    void operator() (const state_type &v, state_type &u) const {
       for (auto i=0; i<v.size(); i++)
          u[i] = x[i] * …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

基于std :: vector的N维张量

我想使用std :: vector定义n维数据结构.我对operator()的定义有问题.让我们看一下2D结构示例

class my_data {

public:
  my_data (size_t N, size_t M) : tab(N*M), _N(N), _M(M) {}

  const double& operator() (size_t i, size_t j) const {
     return tab.at(i * M + j);
  }

  double& operator() (size_t i, size_t j) {
     return tab.at(i * M + j);
  }

private:
   std::vector<double> tab;
   size_t _N;
   size_t _M;

};
Run Code Online (Sandbox Code Playgroud)

我想使用模板为任何维度定义这样的结构,但我不知道它是否可行.基本上我想拥有的就是那样的东西

my_data<4> vec (1,2,3,4);
Run Code Online (Sandbox Code Playgroud)

定义尺寸为1,2,3,4的4D'张量'(所有元素的数量1*2*3*4).您现在可以通过键入来访问和更改值

vec (0,0,0,0) = 2.0;
Run Code Online (Sandbox Code Playgroud)

c++11

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

将参数包转换为向量

我试图理解 C++ 中的可变参数模板,但我在以下示例中迷失了:想象一个函数foo(T, T, T, T)它采用相同类型 T 的可变参数数量并将它们转换为向量。知道如何实现一个吗?

它应该像这样工作

foo<int>(1,2,3,4) returns std::vector<int> x{1,2,3,4}
foo<double>(0.1,0.2,0.3) returns std::vector<double> x{0.1,0.2,0.3}
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++14

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

使用双引号和换行符在pySpark中读取csv文件

我在使用 pySpark 读取 csv 文件时遇到问题。我有三列,其中包含 url 地址、标题(字符串)和完整的 html 文件。最后一个字段用引号 "..." 括起来,其中引用的任何内容都有双引号,例如 "test" -> ""test""(它还包含换行符)。我可以使用 Pandas 读取这个文件,一切都很好,但是当我使用 pySpark 时,它不会破坏 coma (,) 分隔符上的文本(我不确定,但可能是 html 中的换行符)。这是一个示例代码:

df = spark.read \
    .option("header", "true") \
    .csv('path_to_file')

print( df.limit(2).collect() )
Run Code Online (Sandbox Code Playgroud)

这是一个不起作用的示例文本:

url,body,title
https://test.com,"<!doctype html >
</html>",title_title
Run Code Online (Sandbox Code Playgroud)

顺便说一句,vim 显示^Mhtml >. 也许这会导致问题?

更新 经过一些尝试,我得出结论,pyspark 将引号内的换行符解释为另一行的开头。但只有当我在文件中按“Enter”作为跳转到新行时才会这样做。如果明确写入\n,则它有效。这件作品:

url,body,title
https://test.com,"<!doctype html >\n</html>",title_title
Run Code Online (Sandbox Code Playgroud)

Pandas 适用于两个版本!

python apache-spark pyspark

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

终止javascript中的挂起的承诺

我有一个JavaScript程序,希望通过提供RabbitMQ的输入来持续执行。问题在于它有时会无限期地挂起并阻塞整个执行过程。我最初的想法是Promise.race在特定时间段后使用超时并让下一条消息进入,但是损坏的Promise本身仍在后台运行,并且永远不会结束。在此设计中,我将开始生成“僵尸”承诺,这些承诺最终将消耗我的系统资源(因为我的应用程序一直在运行)。我对这个程序真的没有控制权。没有什么abort()可以发送给我的功能了。所以我的问题是: 有没有办法杀死Promise并将其完全从事件循环中删除?

如果不可能,那么将第二个nodejs程序作为子进程生成并在出现问题时将其杀死呢?可以正确清理我的系统资源吗?

javascript asynchronous node.js

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