Tag: 并行处理

我们如何在Memcached读取上阻止Ruby on Rails,以免它占用CPU?

我们有一个守护进程,它扫描表中的脏位,然后批量调度脏行到delayed_job。 为了避免select from data where dirty = 1进行常量select from data where dirty = 1 ,我们设置了一个memcached屏障,它包装了表扫描,就像 loop do # daemon until Rails.cache.fetch(“have_dirty_rows”) do end page = 1 loop do # paginate dirty rows dirty_batch = paginate(#:select => “*”, :order => “id”, :per_page => DIRTY_GET_BATCH_SIZE, :conditions => {:dirty => 1}, :page => page) if dirty_batch.empty? Rails.cache.write(“have_dirty_rows”,false) break […]

如何获得最佳性能rails请求并行sidekiq worker

我的rails应用程序有一个sidekiq工作者。 工作人员将向api外部发出2500个请求,响应为xml。 如何为这名工人获得最佳表现?

什么是Ruby相当于Python的多处理模块?

为了在Ruby或Python中获得真正的并发性,我需要创建新的进程。 Python使用multiprocessing模块使这非常简单,它模糊了所有的fork / wait优点,让我专注于我的代码。 Ruby有类似的东西吗? 现在我调用Process.fork和Process.wait来获得并发性,我想要一个更清晰的解决方案。

使用Ruby Test Unit在一个脚本中并行运行多个测试

我在一个ruby脚本中有4个测试,我使用命令运行 ruby test.rb 输出看起来像 Loaded suite test Started …. Finished in 50.326546 seconds. 4 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 我想要实现的是,并行运行所有4个测试而不是顺序测试。 像4个线程一样运行一个测试,有效地将执行时间减少到4个测试中最慢的时间+并行执行的时间很少。 我遇到了这个 ,但这似乎并行运行多个ruby测试文件 – 比如说如果我有test1.rb,test2.rb test3.rb,那么所有三个文件将并行运行。 任何帮助将不胜感激。

Ruby文件读取parallelisim

我有一个包含很多行的文件(比如10亿)。 脚本正在迭代所有这些行,以将它们与另一个数据集进行比较。 由于目前这是在1个线程/ 1核心上运行,我想知道我是否可以启动多个分叉,每个分别同时处理文件的一部分。 到目前为止,我想到的唯一解决方案是sed unix命令。 使用sed,可以读取文件的“切片”(第x行到第y行)。 因此,一些叉子可以处理相应seds的输出。 但问题是Ruby会先将整个sed输出加载到RAM中。 有没有比sed更好的解决方案,或者有没有办法将sed输出“流”到Ruby?

ruby中的并行HTTP请求

我有一系列的URL,我不想打开每个URL并获取一个特定的标签。 但我想并行地做这件事。 这是我想要做的伪代码: urls = […] tags = [] urls.each do | url | fetch_tag_asynchronously(url)do | tag | 标签<<标签 结束 结束 wait_for_all_requests_to_finish() 如果这可以以一种美妙而安全的方式完成,那将是非常棒的。 我可以使用线程,但它看起来不像数组在ruby中是线程安全的。