ruby:多个相同或同步的mechanize实例?

ruby:多个相同或同步的mechanize实例?,ruby,mechanize,Ruby,Mechanize,据我所知,我在别处读到ruby mechanize不是线程保存。因此,为了加速一些“get”,我选择实例化几个独立的Mechanize对象并并行使用它们。这似乎行得通 顺便说一句,我想让所有的例子尽可能的相似,就像分享他们所知道的“一切”(cookies等) 是否有任何方法可以对已“配置”的Mechanize对象进行深度复制。我的目标是只配置其中一个,然后复制并克隆它 例如,如果我可以像这样创建Mechanize对象(只是一个示例,但假设有更多配置的属性): 我怎样才能在“获取”时不相互干扰地获

据我所知,我在别处读到ruby mechanize不是线程保存。因此,为了加速一些“get”,我选择实例化几个独立的Mechanize对象并并行使用它们。这似乎行得通

顺便说一句,我想让所有的例子尽可能的相似,就像分享他们所知道的“一切”(cookies等)

是否有任何方法可以对已“配置”的Mechanize对象进行深度复制。我的目标是只配置其中一个,然后复制并克隆它

例如,如果我可以像这样创建Mechanize对象(只是一个示例,但假设有更多配置的属性):

我怎样才能在“获取”时不相互干扰地获取副本

agent2 = agent.dup # are not thread save copies
agent2 = Marshal.load(Marshal.dump(agent)) # thorws an error

在更改“最大历史记录”或“读取超时”的值之前,此选项似乎一直有效

class Mechanize
    def clone
        Mechanize.new do |a|
            a.cookie_jar = cookie_jar
            a.max_history = max_history
            a.read_timeout = read_timeout
        end
    end
end
测试:

agent1 = Mechanize.new { |a| a.max_history = 30; a.read_timeout = 30 }
agent2 = agent1.clone
agent2.max_history == 30 # true
agent2.cookie_jar == agent1.cookie_jar # true

克隆历史记录、用户代理等怎么样。?
agent1 = Mechanize.new { |a| a.max_history = 30; a.read_timeout = 30 }
agent2 = agent1.clone
agent2.max_history == 30 # true
agent2.cookie_jar == agent1.cookie_jar # true