ruby - 通过 ruby​​ 和多核支持运行应用程序? (苹果系统)

标签 ruby macos

我正在寻找一些教程/资源/提示,它们将向我展示如何通过 ruby​​ 脚本运行应用程序。我有几个在日常操作中使用的小工具,我想在一个 ruby​​ 脚本中管理它们的任务。

基本上我想做的是:

  1. 通过 ruby​​ 脚本运行应用程序。
  2. (等待结果)获取结果代码(成功或错误消息)
  3. 如果没问题,启动应用程序执行下一个任务。

此外,每个任务都是独立的,因此我想利用 MacPro 上的 8 个内核并一次运行 8 个实例。

最佳答案

第一:使用 MacRuby。最新的 MacRuby 内置了 Grand Central 调度——这就是自动管理多核线程等的 Snow Leopard spiffiness。您可能不需要所有这些,但如果您知道它只会在 Mac 上运行,为什么不呢?

第二:获取 1.9 版的 Pickaxe 书(即 Programming Ruby 1.9)并阅读有关线程、纤程和进程的整个章节。

第三:根据自己的需要调整你学到的东西,但我可能会通过为每个任务分离一个新的 Thread 然后运行一个 system 来解决这个问题或在其自己的线程中为每个实用程序调用“反引号”。 Ruby 1.9 有真正的线程(而 MacRuby 有更好的线程),所以这些真的会同时运行——如果你主要在等待外部进程,解释器锁定根本不重要。

(如果你不需要关注调用的结果并且不需要循环,Pickaxe 的例子 exec('foo') if fork.nil? 会甚至更简单。我已经多次使用它来进行一次备份多个目录等操作。)

Colin 关于 EventMachine 的建议也行得通,如果你正确实现它(如果你的工作流程对事件异步 I/O 有意义),它会尽可能快,但会 更复杂和繁琐。由于您并不想扩展到整个宇宙,您只是想完成一些本地实用程序任务,我认为线程会很好地满足您的需求,并且会使代码更简单、更具可读性和可维护性。

关于ruby - 通过 ruby​​ 和多核支持运行应用程序? (苹果系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481469/

相关文章:

ruby-on-rails - jekyll ruby​​ 上的 kramdown coderay syntax_highlighter

ruby-on-rails - rails : how to query the length of a has_many relationship while caching it?

macos - 如何使用 Tomcat 运行 Angular 2 形式的 IntelliJ?

linux - 在 osascript 中传递 bash 变量时出错

macos - 如何使用 Applescript 检查 Chrome 是否在隐身模式下运行?

ruby-on-rails - rails/Rspec : Having an anonymous controller be of a certain class

python - Ruby 哈希和 Python 字典有什么区别?

ruby - 为什么 'transform_keys' 方法未定义?

objective-c - NSToolbar可以设置背景图片吗?

macos - Mac OS X 上 NSAttributedString initWithRTF 没有可见接口(interface)