如何无需等待就可以检查ruby子进程是否已完成

纳特

我知道您可以在红宝石中执行类似的操作,

download_process = IO.popen "wget #{goodies}"
download_process.wait
puts "goodies gotten"

生成子流程并在完成时做出响应。

但是,说我想让我的脚本在等待子进程完成的同时忙于其他任务,然后定期检查是否有任何子进程已经完成。我将如何在红宝石中做到这一点?

我的目标是让n个同步下载线程由单个ruby线程管理,该线程还清理并处理下载的数据文件(因此,在处理文件后,它会检查有多少完整的下载文件正在等待,并决定相应地产生多少个下载线程)。

谢尔盖·库茨科(SergeyKutsko)

对于这种情况,请使用IO.popen,并将其包装在Thread中。为该工作示例添加了-q选项:

file1 = "http://www.vim.org/scripts/download_script.php?src_id=7701"
file2 = "http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2"
threads = []

threads << Thread.new do
 IO.popen("wget -q   #{file1}"){ |io| io.read}
end

threads << Thread.new do
  IO.popen("wget -q  #{file2}"){ |io| io.read }
end

while true
  sleep(2)
  threads.each_with_index do |tr, index|
    if tr.alive?
      puts "Downloading in \##{index}"
    else
      puts "Downloaded in \##{index}"
      threads[index]  = Thread.new do
        IO.popen("wget -q   #{file1}"){ |io| io.read}
      end
    end
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以创建无需在scala中导入就可以访问的方法?

来自分类Dev

如何检查gif动画是否已完成

来自分类Dev

Ruby:等待任何子进程完成

来自分类Dev

Ruby:等待任何子进程完成

来自分类Dev

CSS:无需使用position:absolute就可以将子级与父级独立地定位

来自分类Dev

如何在Codeigniter中无需foreach就可以将数据获取到视图中?

来自分类Dev

无需终端操作就可以知道流的大小

来自分类Dev

无需换行就可以睡觉和打印?

来自分类Dev

让Jenkins无需永远运行就可以开始批处理?

来自分类Dev

无需服务器就可以编写Bot吗?

来自分类Dev

是否有无需选择就可以运行当前代码块的快捷方式?

来自分类Dev

如何检查MediaPlayer是否已完成声音加载?

来自分类Dev

如何检查线程是否已完成其任务?

来自分类Dev

如何检查QImage :: save()是否已完成写入磁盘?

来自分类Dev

如何检查api调用是否已完成

来自分类Dev

Bash:如何检查网站是否已完成加载?

来自分类Dev

解析推送-如何自动打开活动,而无需用户采取行动就可以在Android上收到推送

来自分类Dev

无需在VBA中编写宏就可以确定元素在特定范围内是否唯一:是否有公式可以做到这一点?

来自分类Dev

是否可以仅使用交换机就可以构建完全功能的LAN,而无需任何路由器?

来自分类Dev

检查是否已完成Vagrant设置

来自分类Dev

检查ALE是否已完成运行lint

来自分类Dev

检查HTML输入是否已完成

来自分类Dev

如何在Node.js中等待子进程完成?

来自分类Dev

如何在SAS中使用rsubmit在后台运行进程而无需等待进程完成

来自分类Dev

如何检查子进程是否正确终止?

来自分类Dev

当运行的进程不是子进程时,如何在perl中等待运行的进程完成?

来自分类Dev

无需任何构建过程就可以在Jenkins上运行Sonar插件吗?

来自分类Dev

无需使用exports命令就可以编写此打字稿

来自分类Dev

AngularJS:指令-无需使用引号就可以传递字符串

Related 相关文章

  1. 1

    是否可以创建无需在scala中导入就可以访问的方法?

  2. 2

    如何检查gif动画是否已完成

  3. 3

    Ruby:等待任何子进程完成

  4. 4

    Ruby:等待任何子进程完成

  5. 5

    CSS:无需使用position:absolute就可以将子级与父级独立地定位

  6. 6

    如何在Codeigniter中无需foreach就可以将数据获取到视图中?

  7. 7

    无需终端操作就可以知道流的大小

  8. 8

    无需换行就可以睡觉和打印?

  9. 9

    让Jenkins无需永远运行就可以开始批处理?

  10. 10

    无需服务器就可以编写Bot吗?

  11. 11

    是否有无需选择就可以运行当前代码块的快捷方式?

  12. 12

    如何检查MediaPlayer是否已完成声音加载?

  13. 13

    如何检查线程是否已完成其任务?

  14. 14

    如何检查QImage :: save()是否已完成写入磁盘?

  15. 15

    如何检查api调用是否已完成

  16. 16

    Bash:如何检查网站是否已完成加载?

  17. 17

    解析推送-如何自动打开活动,而无需用户采取行动就可以在Android上收到推送

  18. 18

    无需在VBA中编写宏就可以确定元素在特定范围内是否唯一:是否有公式可以做到这一点?

  19. 19

    是否可以仅使用交换机就可以构建完全功能的LAN,而无需任何路由器?

  20. 20

    检查是否已完成Vagrant设置

  21. 21

    检查ALE是否已完成运行lint

  22. 22

    检查HTML输入是否已完成

  23. 23

    如何在Node.js中等待子进程完成?

  24. 24

    如何在SAS中使用rsubmit在后台运行进程而无需等待进程完成

  25. 25

    如何检查子进程是否正确终止?

  26. 26

    当运行的进程不是子进程时,如何在perl中等待运行的进程完成?

  27. 27

    无需任何构建过程就可以在Jenkins上运行Sonar插件吗?

  28. 28

    无需使用exports命令就可以编写此打字稿

  29. 29

    AngularJS:指令-无需使用引号就可以传递字符串

热门标签

归档