1

我有一个 ruby​​ 脚本,它需要大约 5 个小时来处理我指定的 rmbp。问题:我们在 2 小时内需要它。

正在运行的代码是非线程安全的,它会从 xlsx 输入中输出一个 csv 文件。...我以前从未使用过服务器场,但我猜非线程安全的 ruby​​ 不完全是他们的东西(?)

简而言之,是否有任何类型的服务器场或服务或任何方式我可以在不到一两个小时的时间内处理一个需要 5 小时的 ruby​​ 脚本?

4

1 回答 1

2

我使用 Heroku 和Sidekiq做了类似的事情。Heroku 为低成本计算提供免费和迷你计划,Sidekiq gem 可以让您将工作分块给多个工作人员,让他们同时运行,从而更快地完成。

你知道你的瓶颈在哪里吗?是 XLSX 文件的输入还是 CSV 的输出?如果是后者,请带入您的 XLSV 文件,并将其中的一部分分块发送给 Sidekiq 工作人员。

例如,您可以将 XLSX 文件拆分为 1000 行的块,然后

rows.each do |row|
  MySidekiqWorker.perform_async(row)
end

您的 MySidekiqWorker 可能如下所示:

class MySidekiqWorker
  include Sidekiq::Worker

  def perform(row)
    # append processed data to CSV
  end
end

您的工作人员完成了所有繁重的工作,并且几乎可以肯定,如果没有此类帮助,您的速度会比您的笔记本电脑快。

于 2012-12-26T00:10:06.103 回答