假设我有两个ruby脚本-a.rb和b.rb。两者都是用于不同页面的网络抓取工具。它们可以工作很多小时,我想同时运行它们。为此,我尝试使用“ promise” gem通过以下代码通过第三个脚本运行它们:
def method_1
require 'path to my file\a'
end
def method_2
require 'path to my file\b'
end
require 'future'
x=future{method_1}
y=future{method_2}
x+y
但是,此解决方案会引发错误(如下),并且仅执行一个脚本。
An operation was attempted on something that is not a socket.
(Errno::ENOTSOCK)
我还尝试过Thread类:
def method_one
require 'path to my file\a'
end
def method_two
require 'path to my file\b'
end
x = Thread.new{method_one}
y = Thread.new{method_two}
x.join
y.join
它给了我与“承诺”宝石相同的错误。
我也已经在单独的shell中运行了这些脚本,然后它们可以同时工作,但是性能却差得多(大约慢50%)。 是否可以同时运行它们并保持高性能?