7.9. Iterowanie równoległe
Problem
Chcemy wykonywać równolegle wiele iteracji, na przykład w celu znajdowania odpowiadających sobie elementów w kilku tablicach.
Rozwiązanie
Równoległe iterowanie po kilku tablicach lub innych obiektach wykorzystujących moduł Enumerable
wykonuje się stosunkowo łatwo za pomocą klasy SyncEnumerator
zdefiniowanej w bibliotece generator
. Metoda each
tej klasy zwraca ciąg tablic, z których każda zawiera kolekcję elementów wywodzących się z pojedynczego kroku każdej z iteracji składowych:
require 'generator' enumerator = SyncEnumerator.new(%w{Four seven}, %w{score years}, %w{and ago}) enumerator.each do |row| row.each { |word| puts word } puts '---' end # Four # score # and # --- # seven # years # ago # --- ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.