小编isa*_*acg的帖子

为什么IDLE 3.4在这个程序上需要这么长时间?

编辑:我完全重做了这个问题.这个问题与time.time()无关

这是一个程序:

import time
start=time.time()
a=9<<(1<<26)             # The line that makes it take a while
print(time.time()-start)
Run Code Online (Sandbox Code Playgroud)

当程序保存为文件并在Python 3.4中使用IDLE运行时,大约需要10秒,即使打印出0.0 time.time().IDLE非常清楚这个问题,因为从命令行运行时,这个程序几乎没有时间.

另一个具有相同效果的程序,如senshin所发现的,是:

def f(): 
    a = 9<<(1<<26)
Run Code Online (Sandbox Code Playgroud)

我已经确认,当在Python 2.7 IDLE或python 2.7或3.4上的命令行中运行时,这个程序几乎是即时的.

那么什么是Python 3.4 IDLE这样做需要这么长时间?我知道计算这个数字并将其保存到内存是磁盘密集型的,但我想知道的是为什么Python 3.4 IDLE执行此计算并在Python 2.7 IDLE和命令行Python可能不会执行时编写.

python python-idle python-3.4

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

我可以有效地从HashSet中随机抽样吗?

我有一个std::collections::HashSet,我想要采样并删除一个均匀的随机元素.

目前,我正在做的是使用随机抽样索引rand.gen_range,然后迭代HashSet到该索引以获取元素.然后我删除所选元素.这有效,但效率不高.有没有一种有效的方法来随机抽样元素?

这是我的代码的简化版本:

use std::collections::HashSet;

extern crate rand;
use rand::thread_rng;
use rand::Rng;

let mut hash_set = HashSet::new();

// ... Fill up hash_set ...

let index = thread_rng().gen_range(0, hash_set.len());
let element = hash_set.iter().nth(index).unwrap().clone();
hash_set.remove(&element);

// ... Use element ...
Run Code Online (Sandbox Code Playgroud)

random hashset rust

6
推荐指数
3
解决办法
424
查看次数

在 Rust 程序意外退出期间注册要运行的函数的最佳方法是什么?

我正在用 Rust 创建一个终端文本编辑器。编辑器将终端置于原始模式,禁用字符回显等,然后退出时恢复原始终端功能。

但是,编辑器有一些错误,并且由于无符号变量下溢等问题时不时会意外崩溃。发生这种情况时,将终端恢复到其原始状态的清理代码永远不会运行。

我想运行的清理功能如下:

fn restore_orig_mode(editor_config: &EditorConfig) -> io::Result<()> {
    termios::tcsetattr(STDIN, termios::TCSAFLUSH, &editor_config.orig_termios)
}
Run Code Online (Sandbox Code Playgroud)

exit atexit rust

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

几分钟后,活塞应用程序因内存分配错误而崩溃

我使用Rust中的Piston开发了一个迷宫游戏,以便自学图形/ UI编程.游戏大多数工作正常,但是当我使用大型迷宫运行它(例如120 x 72矩形)时,游戏会在几分钟后因内存分配错误而崩溃.

一个简化的例子如下:

extern crate graphics;
extern crate opengl_graphics;
extern crate piston;
extern crate piston_window;

use opengl_graphics::OpenGL;
use piston::event_loop::*;
use piston::input::*;
use piston_window::{PistonWindow, WindowSettings};

const BLACK: [f32; 4] = [0.0, 0.0, 0.0, 1.0];
const WHITE: [f32; 4] = [1.0, 1.0, 1.0, 1.0];

fn main() {
    let opengl = OpenGL::V3_2;

    let mut window: PistonWindow = WindowSettings::new("maze", [800, 600])
        .opengl(opengl)
        .exit_on_esc(true)
        .build()
        .unwrap();

    let mut events = Events::new(EventSettings::new());

    while let Some(event) = events.next(&mut window) {
        if let Some(_args) = event.render_args() …
Run Code Online (Sandbox Code Playgroud)

out-of-memory rust rust-piston

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