可能重复:
从线程返回值
我想得到像这样的一堆服务器的"免费记忆":
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__?
我试图在bash脚本中运行sshpass命令,但它无法正常工作.
如果我从终端运行相同的命令它工作正常,但它在bash脚本中运行它没有.
#! /bin/bash
sshpass -p 'password' ssh user@host command
Run Code Online (Sandbox Code Playgroud)
我知道安全问题,但现在并不重要.
有人可以帮忙吗?我错过了什么.
谢谢
我正在将我的tumblr博客迁移到docpad并开始使用这个样板:https://github.com/ervwalter/ewalnet-docpad
现在我的问题是"docpad run"运行需要58秒,而livereload运行需要23秒.我写了这个样板的作者,他说他也有同样的东西,但这并不会让他太烦恼.
但是我不想在博客文章的每个更改中等待半分钟才能看到它的样子,所以我试图让它更快.我尝试使用nodetime进行性能分析,但我没有看到每种方法的深入分析.我的假设是部分时间丢失了,它将整个帖子发送给部分
我如何配置Docpad,以便查看时间丢失的位置?我知道问题非常广泛,但我在DocPad上进行性能优化时发现的是,你应该让Docpad不要解析静态文件.
更新缺少的链接是我需要启动CPU profileron nodetime:
CPU profiler节点时间开始docpad --profile run不幸的是,在我的情况下,输出并没有多大帮助.在我的运行结果表明, 时间81%是花费在ambi.js,这似乎只是它调用功能的中间层.我无法找出调用哪些函数,添加console.log(fireMethod.toString())我只看到
function () { [native code] }
Run Code Online (Sandbox Code Playgroud)
所以我不是更进一步.我怎样才能找出实际花费的时间?供参考:这是我的v8.log
另外,我有点担心,docpad几乎只依赖于Benjamin Lupton编写的模块.为什么会这样?
我正在将每个服务下的所有实例从旧的 AWS 账户移动到新的 AWS 账户。我找到了将 EC2 和 RDS 移动到另一个帐户的方法。
现在我需要将 Elasticsearch 从旧帐户移动到新帐户。我无法找到移动 Elasticsearch 的方法。谁可以帮我这个事?
我试图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) 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?
我发现两件事很接近:
assert_eq!. 这需要另一行,panic因此调用者无法处理错误。使用这些特征:
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)我正在寻找一种模仿终端进行一些自动化测试的方法:即启动一个进程,然后通过将数据发送到标准输入并从标准输出读取来与其交互。例如,将一些输入行发送到标准输入,包括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它仅处于“交互模式”。
更新:我在原来的问题中混淆了 shell 和终端。我现在把这事弄清楚了。我还提到了ssh应该是的sh。
我想将列表拆分为具有相同列数的行,我正在寻找最佳(最优雅/ 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) 我正在使用装配了车把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的新手,所以我可能只是错过了那个显而易见的东西
我有src/bin/linux-only.rs一些只在Linux上工作的东西(例如只存在于Linux上的libc绑定).我想将该文件排除在OS X上.
我开始#[cfg(target_os = "linux")]使用每个块,linux-only.rs但是这会使源代码更加混乱.
有没有更好的方法来做到这一点?