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