小编han*_*ast的帖子

python中的线程:使用target =时检索返回值

可能重复:
从线程返回值

我想得到像这样的一堆服务器的"免费记忆":

def get_mem(servername):  
    res = os.popen('ssh %s "grep MemFree /proc/meminfo | sed \'s/[^0-9]//g\'"' % servername)  
    return res.read().strip()  
Run Code Online (Sandbox Code Playgroud)

因为这可以是线程我想做类似的事情:

import threading  
thread1 = threading.Thread(target=get_mem, args=("server01", ))  
thread1.start()
Run Code Online (Sandbox Code Playgroud)

但是现在:如何访问get_mem函数的返回值?我真的需要去一个全功能的方式创建class MemThread(threading.Thread)和覆盖__init____run__

python memory multithreading

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

如何将sshpass命令放入bash脚本中?

我试图在bash脚本中运行sshpass命令,但它无法正常工作.

如果我从终端运行相同的命令它工作正常,但它在bash脚本中运行它没有.

#! /bin/bash

sshpass -p 'password' ssh user@host command
Run Code Online (Sandbox Code Playgroud)

我知道安全问题,但现在并不重要.

有人可以帮忙吗?我错过了什么.

谢谢

ssh bash

8
推荐指数
4
解决办法
9万
查看次数

Docpad - 如何找出缓慢的原因?

我正在将我的tumblr博客迁移到docpad并开始使用这个样板:https://github.com/ervwalter/ewalnet-docpad

现在我的问题是"docpad run"运行需要58秒,而livereload运行需要23秒.我写了这个样板的作者,他说他也有同样的东西,但这并不会让他太烦恼.

但是我不想在博客文章的每个更改中等待半分钟才能看到它的样子,所以我试图让它更快.我尝试使用nodetime进行性能分析,但我没有看到每种方法的深入分析.我的假设是部分时间丢失了,它将整个帖子发送给部分

我如何配置Docpad,以便查看时间丢失的位置?我知道问题非常广泛,但我在DocPad上进行性能优化时发现的是,你应该让Docpad不要解析静态文件.

更新缺少的链接是我需要启动CPU profileron nodetime:

  1. 配置nodetime,在此处描述
  2. CPU profiler节点时间开始
  3. 启动docpad: docpad --profile run

不幸的是,在我的情况下,输出并没有多大帮助.在我的运行结果表明, 时间81%是花费在ambi.js,这似乎只是它调用功能的中间层.我无法找出调用哪些函数,添加console.log(fireMethod.toString())我只看到

function () { [native code] }
Run Code Online (Sandbox Code Playgroud)

所以我不是更进一步.我怎样才能找出实际花费的时间?供参考:这是我的v8.log

另外,我有点担心,docpad几乎只依赖于Benjamin Lupton编写的模块.为什么会这样?

node.js docpad

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

如何将 AWS Elasticsearch 移动到另一个账户

我正在将每个服务下的所有实例从旧的 AWS 账户移动到新的 AWS 账户。我找到了将 EC2 和 RDS 移动到另一个帐户的方法。

  • 为了移动 EC2 实例,我创建了一个 AMI 并与新的 AWS 账户共享。使用该图像我创建了一个实例
  • 为了移动 RDS 实例,我创建了一个快照并与新的 AWS 账户共享。我已在新帐户中恢复了共享快照

现在我需要将 Elasticsearch 从旧帐户移动到新帐户。我无法找到移动 Elasticsearch 的方法。谁可以帮我这个事?

amazon-web-services aws-elasticsearch

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

为结构创建*mut*mut

我试图pthread_join用指向我的结构的指针调用,以便C线程可以将结构填充到我指向它的内存中.(是的,我知道这是非常不安全的..)

功能签名pthread_join:

pub unsafe extern fn pthread_join(native: pthread_t,
                                  value: *mut *mut c_void)
                                  -> c_int
Run Code Online (Sandbox Code Playgroud)

我这样做是为了将C代码从一本书移植到Rust.C代码:

pthread_t   tid1;
struct foo  *fp;
err = pthread_create(&tid1, NULL, thr_fn1, NULL);
err = pthread_join(tid1, (void *)&fp);
Run Code Online (Sandbox Code Playgroud)

我想出了这段代码:

extern crate libc;
use libc::{pthread_t, pthread_join};

struct Foo {}

fn main() {
    let tid1:pthread_t = std::mem::uninitialized();
    let mut fp:Box<Foo> = std::mem::uninitialized();
    let value = &mut fp;
    pthread_join(tid1, &mut value);
}
Run Code Online (Sandbox Code Playgroud)

但我看到的错误是:

error[E0308]: mismatched types
  --> src/bin/11-threads/f04-bogus-pthread-exit.rs:51:24
   |
51 |     pthread_join(tid1, &mut value);
   |                        ^^^^^^^^^^ …
Run Code Online (Sandbox Code Playgroud)

ffi rust

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

如何以惯用的 Rust 方式处理来自 libc 函数的错误?

libc 的错误处理通常是< 0在发生错误时返回一些内容。我发现自己一遍又一遍地这样做:

let pid = fork()
if pid < 0 {
    // Please disregard the fact that `Err(pid)`
    // should be a `&str` or an enum
    return Err(pid);
}
Run Code Online (Sandbox Code Playgroud)

我觉得这需要 3 行错误处理很难看,特别是考虑到这些测试在这种代码中非常频繁。

有没有办法返回一个Err以防万一fork()返回< 0

我发现两件事很接近:

  1. assert_eq!. 这需要另一行,panic因此调用者无法处理错误。
  2. 使用这些特征:

    pub trait LibcResult<T> {
        fn to_option(&self) -> Option<T>;
    }
    
    impl LibcResult<i64> for i32 {
        fn to_option(&self) -> Option<i64> {
            if *self < 0 { None } else { Some(*self) } …
    Run Code Online (Sandbox Code Playgroud)

error-handling libc rust

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

通过向 stdin 发送 ctrl-c 来向进程发送 SIGINT

我正在寻找一种模仿终端进行一些自动化测试的方法:即启动一个进程,然后通过将数据发送到标准输入并从标准输出读取来与其交互。例如,将一些输入行发送到标准输入,包括ctrl-c和 ,ctrl-\这将导致向进程发送信号。

使用std::process::Commannd我能够将输入发送到eg cat,并且我还在stdout上看到它的输出,但是发送ctrl-c(据我所知3)不会导致SIGINT发送到shell。例如这个程序应该终止:

use std::process::{Command, Stdio};
use std::io::Write;

fn main() {
    let mut child = Command::new("sh")
        .arg("-c").arg("-i").arg("cat")
        .stdin(Stdio::piped())
        .spawn().unwrap();
    let mut stdin = child.stdin.take().unwrap();
    stdin.write(&[3]).expect("cannot send ctrl-c");
    child.wait();
}
Run Code Online (Sandbox Code Playgroud)

我怀疑问题是发送ctrl-c需要一些 tty 并且通过sh -i它仅处于“交互模式”。

我是否需要成熟并使用例如termionncurses

更新:我在原来的问题中混淆了 shell 和终端。我现在把这事弄清楚了。我还提到了ssh应该是的sh

unix signals process pty rust

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

Python:将列表拆分为定义大小的块并填充休息

我想将列表拆分为具有相同列数的行,我正在寻找最佳(最优雅/ pythonic)方式来实现此目的:

>>> split.split_size([1,2,3], 5, 0)
[[1, 2, 3, 0, 0]]

>>> split.split_size([1,2,3,4,5], 5, 0)
[[1, 2, 3, 4, 5]]

>>> split.split_size([1,2,3,4,5,6], 5, 0)
[[1, 2, 3, 4, 5], [6, 0, 0, 0, 0]]

>>> split.split_size([1,2,3,4,5,6,7], 5, 0)
[[1, 2, 3, 4, 5], [6, 7, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所提出的:

def split_size(l, size, fillup):
    """
    splits list into chunks of defined size, fills up last chunk with fillup if below size
    """
    # len(l) % size or size
    # does i.e. …
Run Code Online (Sandbox Code Playgroud)

python

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

组装:注册车把辅助功能

我正在使用装配了车把1.3.0的装配 0.4.17.
我正在尝试添加一个自定义手柄助手,如此处所述.

所以我把它添加到我的Gruntfile(在文件的底部,在...之外module.exports = function(grunt) {)

Gruntfile.js

module.exports.asdf = function (str)  {  return 'asdf here!'; };
Run Code Online (Sandbox Code Playgroud)

并将其添加到
index.hbs中

{{#asdf}}
  bobo
{{/asdf}}
Run Code Online (Sandbox Code Playgroud)

我建议asdf here!将在生成的html中显示,但它不会,而是只打印一个空白行.我也试过这个module.exports.register = function (Handlebars, options)方法,但是这个方法也不行.我是否需要添加其他东西才能添加此车把助手?

我是Assemble和grunt and handlebar的新手,所以我可能只是错过了那个显而易见的东西

template-engine handlebars.js assemble grunt-assemble

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

如何排除在OS X上构建文件?

我有src/bin/linux-only.rs一些只在Linux上工作的东西(例如只存在于Linux上的libc绑定).我想将该文件排除在OS X上.

我开始#[cfg(target_os = "linux")]使用每个块,linux-only.rs但是这会使源代码更加混乱.

有没有更好的方法来做到这一点?

conditional-compilation rust rust-cargo

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