小编use*_*ica的帖子

Math.random随机位数

是否有任何关于Math.random应该产生多少随机位的要求?我对Chrome和Firefox的实现进行了一些测试,将结果转换为十六进制以检查位,Firefox 27.0.1给出了类似的结果

0x1.de619579d56f3p-1
0x1.ef1ada9306decp-2
0x1.df3b75e208ce6p-1
Run Code Online (Sandbox Code Playgroud)

而Chrome版本33.0.1750.154米给出

0x1.1190f39c00000p-2
0x1.b959e3b600000p-1
0x1.90f614b400000p-2
Run Code Online (Sandbox Code Playgroud)

相比之下,这是一个神圣的.它似乎是一个32位的结果,而Firefox的值似乎使用53个随机位.

javascript random cross-browser

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

如何抑制上下文管理器中的给定异常?

当尝试忽略上下文管理器执行期间引发的异常时,我有哪些选择?事实上,以下简单的上下文管理器只是传播结果,导致其结束执行,除非被捕获:

class contextMan:    
    def __enter__(self):
        print("Entering Context")

    def __exit__(self, exc_type, exc_value, traceback):
        print("Exiting Context")

if __name__ == "__main__":
    with contextMan():
        raise IndexError
Run Code Online (Sandbox Code Playgroud)

我当然可以将它放在一个try -- except子句中,但这似乎是一种相当乏味的方法。当然,有更好的选择来解决这个问题。

python python-3.x

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

向后解码Unicode文本

许多文本编码都具有以下属性:您可以向后查看编码文本,但仍然可以对其进行解码.ASCII,UTF-8,UTF-16和UTF-32都具有此属性.这可以让你做一些方便的事情,比如读取文件的最后一行而不读取它前面的所有行,或者从文件中的当前位置向后移几行.

不幸的是,Python似乎没有任何方法可以向后解码文件.您不能read向后或seek按编码文件中的字符数量.codecs模块中的解码器支持向前递增解码,但不支持向后解码.似乎没有任何"UTF-8-backwardwards"编解码器,我可以以相反的顺序提供UTF-8字节.

我本可以自己实现与编解码器相关的字符边界同步,向后读取二进制块,并将正确对齐的块提供给codecs模块中的适当解码器,但这听起来像非专家会错过一些细微的细节和没有注意到输出是错误的.

有没有简单的方法可以使用现有工具在Python中向后解码文本?


有几个人似乎错过了阅读整个文件来做到这一点的观点.虽然我在澄清事情,但我还是补充一点,这也需要适用于可变长度编码.UTF-8支持是必须的.

python unicode encoding text

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

Python2词典中的非单调内存消耗

有人可以解释CPython 2.7中字典的非单调内存使用吗?

>>> import sys
>>> sys.getsizeof({})
280
>>> sys.getsizeof({'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5})
280
>>> sys.getsizeof({'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6})
1048
>>> sys.getsizeof({'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7})
1048
>>> sys.getsizeof({'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'e
ight': 8})
664
>>> sys.getsizeof({'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, …
Run Code Online (Sandbox Code Playgroud)

python memory cpython python-2.7 python-internals

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

为什么 ThreadPoolExecutor 的默认 max_workers 是根据 CPU 数量决定的?

的文档concurrent.futures.ThreadPoolExecutor说:

改变在3.5版本中:如果max_workersNone或者没有给出,将默认为机器上的处理器,乘以数量5,假设的ThreadPoolExecutor通常用于重叠I / O,而不是CPU的工作,工人的数量应该更高比ProcessPoolExecutor的工人数量。

我想了解为什么默认max_workers值取决于 CPU 的数量。不管我有多少 CPU,在任何时间点都只能运行一个 Python 线程。

让我们假设每个线程都是 I/O 密集型的,它只有 10% 的时间在 CPU 上,90% 的时间在等待 I/O。然后让我们假设我们有 2 个 CPU。我们只能运行 10 个线程来使用 100% 的 CPU。我们不能再使用 CPU,因为在任何时间点都只有一个线程在运行。即使有 4 个 CPU,也是如此。

那么为什么默认是max_workers根据 CPU 数量来决定的呢?

python cpu performance multithreading gil

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

python 3打印生成器

当我处理print()函数(Python 3)时出现问题.

当我在寻找系列的总和时,我可以使用以下代码模式:

>>> sum(i for i in range(101))
Run Code Online (Sandbox Code Playgroud)

但是,当我倾向于检查我所做的系列时:(我选择print()并假设它将逐行打印)

>>> print(i for i in range(101))
Run Code Online (Sandbox Code Playgroud)

事实证明,它成为没有价值回报的发电机对象.所以我必须使用list()进行系列检查.这是印刷功能的缺陷吗?

PS:上面写的是一个形成发生器的例子,不是自然系列的最简单形式,而是复杂系列的骨骼结构.为了方便系列值检查,我正在寻找一种逐行打印每个值的方法.

python printing generator python-3.x

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

Cython的language_level 3和3str有什么区别?

在即将到来的Cython 3.0版本中,3strlanguage_level(由Cython 0.29引入)成为新的默认值,而不是当前的默认值2,即,如果未设置language_level(如何设置),则会收到以下警告:

FutureWarning:未设置Cython指令'language_level',暂时使用'3str'(Py3)。这与以前的版本有所不同!文件:/home/ed/mygithub/cython/foo.pyx tree = Parsing.p_module(s,pxd,full_module_name)

但是3str3语言级别和语言级别之间有什么区别?对于哪些代码,使用语言级别3str3语言级别编译的模块的行为会有所不同吗?

python cython

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

为什么 std::reduce 需要交换性?

https://en.cppreference.com/w/cpp/algorithm/reduce

它说如果操作不是可交换的,则操作的行为未定义,但为什么呢?我们只是将数组分成块,然后合并结果。是否只需要具有关联性?

c++ c++17

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

Python - numpy mgrid 和重塑

有人可以向我解释这段代码的第二行是做什么的吗?

objp = np.zeros((48,3), np.float32)
objp[:,:2] = np.mgrid[0:8,0:6].T.reshape(-1,2)
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释代码的 np.mgrid[0:8,0:6] 部分到底在做什么以及代码的 T.reshape(-1,2) 部分到底在做什么吗?

谢谢,干得好!

numpy

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

在没有内置函数或程序集的情况下在C中实现setjmp和longjmp(获取不正确的返回值)

我正在尝试测试我的两个函数,它们模仿setjmp和longjmp用于作业 - 这是非常困难的,因为我们不允许使用内置函数或汇编asm()来实现longjmp和setjmp函数.(是的,那真的是作业.)

问题:我一直收到错误的返回值.所以,简而言之,当main()调用foo()和foo()调用bar(),而bar()调用longjump()时,bar()不应该返回foo(),而是setjmp()应该返回main的返回值为1,应打印"error"(参见下面的main()).

相反,我的输出结果如下:

start foo
start bar
segmentation fault
Run Code Online (Sandbox Code Playgroud)

分段错误,我尝试通过使用malloc初始化指针*p来修复,但似乎没有做任何事情.虽然,分段错误,是我没有得到正确的返回值的原因?

码:

#include <stdio.h>
#include <stdlib.h>

int setjmp(int v);
int longjmp(int v);
int foo(void);
int bar(void);
int *add;


int main(void) {

    int r;

    r = setjmp(r);
    if(r == 0) {
        foo();
        return(0);
    } else {
        printf("error\n");
        return(2);
    }

}

int _main(void) {
    return(0);
}

int setjmp(int v)
{
    add = &v;
    return(0);
}

int longjmp(int v)
{
    int *p;
    p = &v;
    *(p - 1) = …
Run Code Online (Sandbox Code Playgroud)

c stack pointers longjmp setjmp

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