Skip to content

Instantly share code, notes, and snippets.

@goyusia
Created February 17, 2016 06:23
Show Gist options
  • Select an option

  • Save goyusia/fd23ad34538802b003ef to your computer and use it in GitHub Desktop.

Select an option

Save goyusia/fd23ad34538802b003ef to your computer and use it in GitHub Desktop.
buggy ruby parallel example
#!/usr/bin/env ruby
require "parallel"
class User
attr_accessor :name
def initialize(name)
@name = name
end
end
def create_users
[
User.new("foo"),
User.new("bar"),
]
end
def print_users(users)
users.each { |u| puts u.name }
end
def main_simple [0/120]
users = create_users
users.each do |user|
user.name = user.name + "!"
end
puts "## simple"
print_users users
end
def main_parallel
users = create_users
Parallel.each(users) do |user|
user.name = user.name + "!"
end
puts "## parallel"
print_users users
end
def main_parallel_thread
users = create_users
Parallel.each(users, in_threads: 2) do |user|
user.name = user.name + "!"
end
puts "## parallel - threads"
print_users users
end
def main_parallel_processes
users = create_users
Parallel.each(users, in_processes: 2) do |user|
user.name = user.name + "!"
end
puts "## parallel - processes"
print_users users
end
main_simple
main_parallel
main_parallel_thread
main_parallel_processes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment