小编Mat*_*nti的帖子

urllib2.urlopen将永久挂起,尽管超时

希望这是一个非常简单的问题,但这使我发疯。我在现成的ubuntu 12.10服务器上使用Python 2.7.3。我一直关注这个问题,直到得到以下片段:

import urllib2
x=urllib2.urlopen("http://casacinema.eu/movie-film-Matrix+trilogy+123+streaming-6165.html", timeout=5)
Run Code Online (Sandbox Code Playgroud)

它只是永远挂起,永远不会超时。我显然做错了。有人可以帮忙吗?确实非常感谢您!

马泰奥

python timeout http urllib2 settimeout

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

C++中的按位扩展

这是我的问题.我在C++中有两个简短的整数:

short a;
short b;
Run Code Online (Sandbox Code Playgroud)

它们的位表示可以放在表单中

a = a0 a1 a2 a3 a4 ... a15
b = b0 b1 b2 b3 b4 ... b15
Run Code Online (Sandbox Code Playgroud)

其中a0,b0,a1,b1等代表两个短整数的单个位.现在,我想知道是否有一种有效的方法来生成表单中的int:

a0 b0 a1 b1 a2 b2 ... a15 b15
Run Code Online (Sandbox Code Playgroud)

我知道我可以迂腐地使用循环并手动对每一位进行位掩码,但我想知道是否有更有效的方法来完成它.

非常感谢你

c++ int bit-manipulation bitmask bit

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

下载时unrar存档

我有一个程序下载part01,然后part02等rar文件分裂在互联网上.我的程序首先下载part01,然后是part02,依此类推.经过一些测试,我发现使用例如UnRAR2 for python我可以提取存档中包含的文件的第一部分(.avi文件),我可以在第一分钟播放它.当我添加另一个文件时,它会提取更多,依此类推.我想知道的是:是否可以在下载文件时提取单个文件?我需要它开始提取part01而不必等待它完成下载......这可能吗?

非常感谢你!

马特奥

python rar download archive unrar

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

#define c ++中的特殊运算符

假设我想在两个对象之间组成一个特殊的运算符!+ C++ 我想使用!+,例如,因为我认为它比任何其他运算符更有意义.

我能做的一件基本事情就是找到一个免费的,未使用的运算符,并使用#define进行替换:

#define !+ %
class myclass 
{
  public:
   int operator %(myclass &c)
   {
      return 3;
   }
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我后来写了类似的东西

a!+b 
Run Code Online (Sandbox Code Playgroud)

使用myclass的a和b实例,它会工作.

现在,有没有办法定义它而不是运算符,具有一些功能?就像是:

#define a!+b -> a.operatorexclamativeplus(b)
Run Code Online (Sandbox Code Playgroud)

它会使翻译变得更少脏,并且可以允许这些新的"假运营商"中潜在的数量无限!

c++ operator-overloading operators c-preprocessor

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

在 C++ 中进行基本 128 位整数计算的有效方法?

几年前,我需要一种方法来使用 Cuda 进行一些基本的 128 位整数数学运算: cuda 上的 128 位整数?. 现在我遇到了同样的问题,但这次我需要在不支持任何类型的 128 位的 32 位嵌入式系统(英特尔爱迪生)上运行一些基本的 128 位算术(求和、位移和乘法)。但是,有直接支持的 64 位整数(unsigned long long int)。

我天真地尝试使用上次在CPU上回答我的asm代码,但是我得到了一堆错误。我真的没有使用 asm 的经验,所以:使用 64 位整数实现 128 位加法、乘法和位移的最有效方法是什么?

c++ x86 assembly int128 intel-edison

4
推荐指数
2
解决办法
7656
查看次数

仅接受某个类的继承人的模板函数

在 C++ 中,假设我有一些 class mom。我知道我可以创建一个接受任何类的模板函数,例如:

template <class T> void Iacceptanything(T x)
{
  // Do something
}
Run Code Online (Sandbox Code Playgroud)

现在,这很好用,但我想创建一个更严格的模板类,它接受T从 class 继承的任何类型mom。我考虑过让函数接受mom作为唯一的参数类型,但在该函数中,我需要使用参数构建一个模板对象,因此我需要保留它的类型(即,我的对象不应该被“修剪”为只是它是 ) 的继承人mom

我需要的是这样的:

template <class T:mom> void Iacceptonlysonsofmom(T x)
{
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

c++ inheritance templates

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

C++优化之谜

采取以下两个片段:

int main()
{
    unsigned long int start = utime();

    __int128_t n = 128;

    for(__int128_t i=1; i<1000000000; i++)
        n = (n * i);

    unsigned long int end = utime();

    cout<<(unsigned long int) n<<endl;

    cout<<end - start<<endl;
}
Run Code Online (Sandbox Code Playgroud)

int main()
{
    unsigned long int start = utime();

    __int128_t n = 128;

    for(__int128_t i=1; i<1000000000; i++)
        n = (n * i) >> 2;

    unsigned long int end = utime();

    cout<<(unsigned long int) n<<endl;

    cout<<end - start<<endl;
}
Run Code Online (Sandbox Code Playgroud)

我在C++中对128位整数进行基准测试.当执行第一个(只是乘法)时,一切都在大约运行.0.95秒 当我还添加位移操作(第二个片段)时,执行时间会增加到惊人的2.49秒.

这怎么可能?我认为位移是处理器最轻的操作之一.怎么这么简单的操作会导致如此多的开销呢?我正在编译O3标志激活.

任何的想法?

c++ optimization bit-shift multiplication

4
推荐指数
2
解决办法
410
查看次数

从可变参数函数将函数应用于参数包的所有元素

考虑以下(不工作!)示例:

#include <iostream>

template <typename type> void print(const type & item)
{
    std :: cout << item << std :: endl;
}

template <typename... types> void printall(const types & ... items)
{
    print(items)...;
}

int main()
{
    printall(1, 2, "hello");
}
Run Code Online (Sandbox Code Playgroud)

这里我有一个函数print,它只是打印出它的参数,以及一个printall接受一组参数的可变参数函数.现在,我想做的是简单地printall应用于print包的每个元素items.我该怎么做呢?

注意:我不是在问如何打印一组值.我知道折叠表达式的存在,我知道我可以把它全部items投入std::cout使用它们.这print只是一个例子,可以是任何函数.

我该怎么做呢?这听起来像是非常简单的事情,但我找不到任何(合理的)语法来做到这一点.

c++ templates function variadic-templates c++11

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

std ::成员函数上的is_function吗?

我可以执行以下操作来检测某物是否为函数:

void f()
{
}

int main()
{
  std :: cout << std :: is_function <decltype(f)> :: value << std :: endl; // true
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我想执行相同的操作但使用的是类的方法,该怎么办?

我天真地试图做类似的事情

class myclass
{
public:
  void f()
  {
  }
};

int main()
{
  std :: cout << std :: is_function <decltype(myclass :: f)> :: value << std :: endl;
}
Run Code Online (Sandbox Code Playgroud)

但是我明白了

Call to non-static member function without an object argument
Run Code Online (Sandbox Code Playgroud)

我应该做些什么?我想要上面的东西..好,只是打印true

c++ templates function std

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

如何在不使用任何外部依赖项的情况下执行 async/await 函数?

我正在尝试创建最简单的示例,async fn hello()最终可以打印出Hello World!. 这应该在没有任何外部依赖的情况下发生tokio,就像普通的 Rust 和std. 如果我们可以在不使用unsafe.

#![feature(async_await)]

async fn hello() {
    println!("Hello, World!");
}

fn main() {
    let task = hello();

    // Something beautiful happens here, and `Hello, World!` is printed on screen.
}
Run Code Online (Sandbox Code Playgroud)
  • 我知道async/await这仍然是一个夜间功能,在可预见的未来可能会发生变化。
  • 我知道有很多Future实现,我知道tokio.
  • 我只是试图让自己了解标准库期货的内部运作方式。

我无助、笨拙的努力

我模糊的理解是,首先,我需要完成Pin任务。所以我继续前进

let pinned_task = Pin::new(&mut task);
Run Code Online (Sandbox Code Playgroud)

the trait `std::marker::Unpin` is not implemented for `std::future::GenFuture<[static generator@src/main.rs:7:18: 9:2 {}]>`
Run Code Online (Sandbox Code Playgroud)

所以我想,当然,我可能需要Box它,所以我确定它不会在内存中移动。有点令人惊讶的是,我得到了同样的错误。

到目前为止我能得到的是 …

asynchronous future rust

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