小编Abd*_*iJK的帖子

如果使用Python 2运行脚本,如何抛出异常?

我有一个只应该用Python 3运行的脚本.我想给出一个很好的错误消息,如果用户试图用Python 2.x运行它,不应该用python2运行这个脚本

我该怎么做呢?当我尝试检查Python版本时,它仍会抛出错误,因为Python在执行我的if条件之前解析整个文件.

如果可能的话,我宁愿不再制作另一个剧本.

python python-3.x

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

打印最多4位小数

我试图在C++(使用流)中的小数点后打印最多4位数.因此,如果数字在小数点后不需要4位数,我希望它只使用它实际需要的小数位数.

例子:

1.12345    -> 1.1234
1.0        -> 1
1.12       -> 1.12
1.12345789 -> 1.1234
123.123    -> 123.123
123.123456 -> 123.1234
Run Code Online (Sandbox Code Playgroud)

我试过std::setprecision(4)但是设置了有效位数并且在测试用例中失败了:

123.123456 gives 123.1
Run Code Online (Sandbox Code Playgroud)

我也尝试过std::fixed,std::setprecision(4)但即使不需要,也会在十进制后给出一个固定的位数:

1.0 gives 1.0000
Run Code Online (Sandbox Code Playgroud)

这似乎std::defaultfloat是我需要的,而不是固定的也不是指数的.但它似乎没有适当地打印小数点后的位数,只有有效数字的选项.

c++ printing cout

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

python multiprocess.Pool在stdout中按顺序显示结果

在multiprocessing.Pool我试图以相同的顺序显示我的打印.

from multiprocessing import Pool
import time
def func(arg):
    time.sleep(0.001)
    print(arg, end=" ")

proc_pool = Pool(4)
proc_pool.map(func, range(30))
Run Code Online (Sandbox Code Playgroud)

输出是:0 1 8 9 10 11 14 15 6 7 16 17 4 5 12 13 18 19 2 3或类似的.它不在订单中0 1 2 3 ...

我知道imap可以提供更好的订购......但它仍然不是我想要的.我可以覆盖打印功能,将其保存到一个变量中并立即打印出来 - 但我希望它们一完成就显示出来 - 而不是一切都完成.

python pool multiprocessing python-multiprocessing

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

C++ 双端队列抛出段错误

我有一个项目中的一些代码似乎不起作用。

我正在尝试创建一个双端队列(结构体),它是类的静态成员。骨架/基本代码如下(我保留了所有数据类型 - my_typedef_fn 是通过 typedef-ing 函数指针获得的数据类型):

1.h文件:

class A {
    struct Bstruct {
        char * b_name;
        my_typedef_fn b_func;
    }
    static std::deque<Bstruct> a_deque;
    static void func();
}
Run Code Online (Sandbox Code Playgroud)

1.cpp文件:

std::deque<A::Bstruct> A::a_deque;
void A::func(char * name, my_typedef_fn fn) {
    a_deque.push_front((Bstruct) {name, fn} ); // <<<< segfault !
} 
Run Code Online (Sandbox Code Playgroud)

根据我的理解 - .h 文件只是声明内容(像往常一样) - .cpp 中的第一行初始化静态成员 a_deque - 函数 func 使用 push_back 将内容添加到双端队列

但我在调用 push_front 的行出现分段错误(使用 gdb 发现了这一点)。

另外,当我在 push_front 之前打印 a_deque.size() 时,我在 SEGFAULT 之前得到 4294967264 当我使用 for 循环计算双端队列中的元素数量时:

int counter = 0 …
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault deque

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

在 pyspark 中的 5 分钟窗口上聚合

我有以下数据框df

User | Datetime         | amount | length
A    | 2016-01-01 12:01 | 10     | 20
A    | 2016-01-01 12:03 | 6      | 10
A    | 2016-01-01 12:05 | 1      | 3
A    | 2016-01-01 12:06 | 3      | 5
B    | 2016-01-01 12:01 | 10     | 20
B    | 2016-01-01 12:02 | 8      | 20
Run Code Online (Sandbox Code Playgroud)

我想有效地使用 pyspark 来聚合超过 5 分钟的时间窗口并进行一些计算 - 例如计算每 5 分钟时间窗口每次使用的平均数量和长度 - df 将如下所示:

User | Datetime         | amount | length
A    | 2016-01-01 …
Run Code Online (Sandbox Code Playgroud)

python pandas pyspark pyspark-sql

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