小编Moh*_*nia的帖子

python子进程communication()块

我正在使用进程模块调用外部程序(plink.exe)来登录服务器; 但是当我呼叫通信来读取输出时,它就是阻塞.代码如下:

 import subprocess
 process = subprocess.Popen('plink.exe hello@10.120.139.170 -pw 123456'.split(), shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 print process.communicate() #block here
Run Code Online (Sandbox Code Playgroud)

我知道该块是因为plink.exe它仍在运行; 但我需要在子进程终止之前读取输出.反正有吗?

python subprocess blocking

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

调用者阻塞,直到getFoo()准备好了值?

我有一个Java Thread,它暴露了其他线程想要访问的属性:

class MyThread extends Thread {
   private Foo foo;
   ...
   Foo getFoo() {
     return foo;
   }
   ...
   public void run() { 
     ...
     foo = makeTheFoo();
     ...
   }
}
Run Code Online (Sandbox Code Playgroud)

问题是从运行到foo可用时需要很短的时间.呼叫者可以getFoo()在此之前致电并获得null.我宁愿他们只是阻塞,等待,并在初始化发生后获取值.(foo之后永远不会改变.)在它准备好之前它将是几毫秒,所以我对这种方法很满意.

现在,我可以通过这种方式实现这一目标,wait()并且notifyAll()有95%的可能性我会做得对.但我想知道你们都会怎么做; 有没有一个原始人java.util.concurrent会这样做,我错过了?

或者,你会如何构建它?是的,制造foo易变的.是的,在内部锁定上同步Object并将检查放入while循环中,直到它不是null.我错过了什么吗?

java multithreading synchronization properties blocking

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

MATLAB代码生成如何使用嵌套分支推断输出大小

当使用MATLAB Coder生成C代码时,当if在另一个if或其else部分的主体中发生时,行为是不同的.以下情况很容易创建输出大小为5x5的C代码:

function y = foo1(u)
if u > 0
    y = zeros(2,2);
else
    y = zeros(5,5);
end
Run Code Online (Sandbox Code Playgroud)

现在这个也适用

function y = foo2(u,v)
if u > 0
    y = zeros(2,2);
else
    y = zeros(5,5);
    if v > 0
        y = 2 * y;
    end
end
Run Code Online (Sandbox Code Playgroud)

但是这个无法生成代码,抱怨大小不匹配:

function y = foo3(u,v)
if u > 0
    y = zeros(2,2);
    if v > 0
        y = 2 * y;
    end
else
    y = zeros(5,5);
end
Run Code Online (Sandbox Code Playgroud)

这是命令行中的输出:

>> …
Run Code Online (Sandbox Code Playgroud)

matlab code-generation matlab-coder

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

获取块参数的数量

我需要获取给定块所需的参数数量.例如:

foobar(1,2,3) { |a, b, c|
}

def foobar(x, y, z, &block)
  # need to obtain number of arguments in block
  # which would be 3 in this example
end
Run Code Online (Sandbox Code Playgroud)

这可以在1.9主干中使用,但不能在任何正式版本中使用.我希望有没有办法做到这一点,而无需下载单独的gem /扩展模块.

ruby methods

10
推荐指数
2
解决办法
3791
查看次数

如何使用块创建帮助程序?

我想做一个像下面这样的帮手.

def my_div some_options, &block
  # How do I print the result of the block?
end

ruby ruby-on-rails helper

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

可以通过编程方式打开/关闭Matlab PARFOR循环吗?

在MATLAB中有一个关于parfor的简单问题.我想在我的程序中设置一个标志,以便在parfor和regular for循环之间进行更改.基本上,我需要这个功能,以便我的代码的某些部分可以在"调试"模式下更新图形,然后当标志关闭时,使用parfor没有图形更新的速度.

所以,我正在寻找具有此功能的简单内容:

if (flag)
  for i = 1:n
else
  parfor i = 1:n
end

  % Do loop tasks.

  end
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!谢谢!

matlab parfor

9
推荐指数
3
解决办法
2458
查看次数

如何在Ruby中不使用'then'或'end'来编写'if'

我发现在Ruby中编写相同条件的三种方法:

#1
if 1==1 
  puts "true" 
end

#2
puts "true" if 1==1

#3
if 1==1  then puts "true" end
Run Code Online (Sandbox Code Playgroud)

为什么我不能这样做?

#4
if 1==1 puts "true"
Run Code Online (Sandbox Code Playgroud)

我不明白:

  1. 为什么然后结束都需要在#3和,
  2. 为什么我需要更改订单以使#2工作.

声明#4似乎是最自然的写作方式.我不明白为什么不可能.

ruby syntax conditional-statements

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

针对多个快速请求的.htaccess或PHP保护代码

我正在寻找有关如何阻止连接到我的网站的外部脚本的想法.我正在寻找谷歌背后的同样想法.如果在一定时间内发出一定数量的请求,则阻止IP地址或其他内容.我想可能有一个htaccess解决方案,如果没有,我会写一个PHP.

任何有关现有方法或脚本的想法或链接都非常感谢.

php .htaccess

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

MATLAB parfor切片问题?

我有一段代码可以在一系列图像中找到哈里斯的角落.我需要为92张图片执行此操作,但速度相当慢.因此,我想并行运行代码.我下面的代码有一个与变量"corner"相关的错误

%% Harris corners
    max_pts = 900;
    corners = zeros(max_pts,2,size(images,3));
    parfor i = 1:size(images,3)
        I = images(:,:,i);
        [y x] = get_corners(I,max_pts);
        corners(1:length(y),:,i) = [y x];
    end
Run Code Online (Sandbox Code Playgroud)

哪个说:

MATLAB通过将循环迭代分成组,然后将它们发送到并行运行的MATLAB工作程序,在parfor函数中运行循环.为了使MATLAB以可重复,可靠的方式执行此操作,它必须能够对循环中使用的所有变量进行分类.代码以与分类不兼容的方式使用指示的变量.建议的操作修复指示变量的使用.有关变量分类和parfor循环迭代的其他限制的更多信息,请参阅并行计算工具箱文档中的"变量分类".

任何想法如何解决这一问题?

谢谢!

matlab parfor

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

Drupal - 显示块内节点的标题

我需要动态显示块内节点的标题.我本以为这会很简单,但我尝试的所有代码片段似乎都不起作用(例如<?php print $node->title; ?> )

我已经检查并测试了PHP输入格式是否已打开并使用其他PHP位和bob,一切似乎都可以.

有任何想法吗?

php drupal drupal-nodes

7
推荐指数
2
解决办法
9628
查看次数