我有一个 ruby 脚本,它需要大约 5 个小时来处理我指定的 rmbp。问题:我们在 2 小时内需要它。
正在运行的代码是非线程安全的,它会从 xlsx 输入中输出一个 csv 文件。...我以前从未使用过服务器场,但我猜非线程安全的 ruby 不完全是他们的东西(?)
简而言之,是否有任何类型的服务器场或服务或任何方式我可以在不到一两个小时的时间内处理一个需要 5 小时的 ruby 脚本?
我有一个 ruby 脚本,它需要大约 5 个小时来处理我指定的 rmbp。问题:我们在 2 小时内需要它。
正在运行的代码是非线程安全的,它会从 xlsx 输入中输出一个 csv 文件。...我以前从未使用过服务器场,但我猜非线程安全的 ruby 不完全是他们的东西(?)
简而言之,是否有任何类型的服务器场或服务或任何方式我可以在不到一两个小时的时间内处理一个需要 5 小时的 ruby 脚本?
我使用 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
您的工作人员完成了所有繁重的工作,并且几乎可以肯定,如果没有此类帮助,您的速度会比您的笔记本电脑快。