# Process.spawn con un blocco

**URL:** <https://www.ruby-forum.com/t/process-spawn-con-un-blocco/244793>\
**Category:** IT\
**Created:** [June 15, 2016, 5:22pm UTC](https://www.ruby-forum.com/t/process-spawn-con-un-blocco/244793 "2016-06-15T17:22:54Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafa\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@Rafa\_F](https://www.ruby-forum.com/u/Rafa_F)\
**Post date:** [June 15, 2016, 5:22pm UTC](https://www.ruby-forum.com/t/process-spawn-con-un-blocco/244793/1 "2016-06-15T17:22:54Z")

</div>

Ciao a tutti ho visto la gemma parallel che mi permette di eseguire  
codice in parallelo utilizzando tutte le CPU a disposizione(non thread),  
solo che in windows non è supportato il fork, per cui mi stavo scrivendo  
del codice per eseguire codice in parallelo quindo mi sono indirizzato  
vero Process.spawn, solo che vorrei passargli come input un blocco di  
codice da eseguire e non un altro programma es:

pid = Process.spawn do  
codice lungo da eseguire…  
end

qualcuno sa se c’è qualche gemma o modo in cui posso fare questo, non  
voglio farlo con i Thread ma utilizzare più processi, in modo da  
utilizzare tutte le cpu presenti nella mia macchina.

Il mio scopo finale è implementare each e map, in modo da ciclare in  
parallelo su una serie di dati

---

<div class="post-metadata">

**Author:** ![barbz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@barbz](https://www.ruby-forum.com/u/barbz)\
**Post date:** [July 8, 2016, 12:25pm UTC](https://www.ruby-forum.com/t/process-spawn-con-un-blocco/244793/2 "2016-07-08T12:25:04Z")

</div>

Prima di cercare gemme dovresti vedere se la standard library to offre  
qualcosa (inoltre puoi imparare molto di piu`):

> **[Module: Process (Ruby 2.2.0)](https://ruby-doc.org/core-2.2.0/Process.html#method-c-spawn)**
>
> Module : Process - Ruby 2.2.0

---

<div class="post-metadata">

**Author:** ![barbz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@barbz](https://www.ruby-forum.com/u/barbz)\
**Post date:** [July 8, 2016, 12:27pm UTC](https://www.ruby-forum.com/t/process-spawn-con-un-blocco/244793/3 "2016-07-08T12:27:24Z")

</div>

Guarda anche qui [http://win32utils.rubyforge.org/](http://win32utils.rubyforge.org/) ti aggiunge fork su  
windows!

---

<div class="post-metadata">

**Author:** ![barbz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@barbz](https://www.ruby-forum.com/u/barbz)\
**Post date:** [July 8, 2016, 1:08pm UTC](https://www.ruby-forum.com/t/process-spawn-con-un-blocco/244793/4 "2016-07-08T13:08:15Z")

</div>

Scusami ma forse non ci siamo capiti, ma il mio scopo era eseguire un  
blocco di codice e non un programma esterno, comunque ho risolto cosi:

require ‘childprocess’

THIS\_FILE = File.expand\_path( **FILE** )  
RUBY = Gem.ruby

ChildProcess.posix\_spawn = true

def child\_main()  
sleep 10  
puts “[child] Started”  
end

if $PROGRAM\_NAME == **FILE**  
puts “[parent] Started”

proc = ChildProcess.build(RUBY, “-r#{THIS\_FILE}”, “-e”, “child\_main”)  
proc.io.inherit!  
proc.start

proc.wait  
end

---

<div class="post-metadata">

**Author:** ![barbz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@barbz](https://www.ruby-forum.com/u/barbz)\
**Post date:** [July 8, 2016, 12:27pm UTC](https://www.ruby-forum.com/t/process-spawn-con-un-blocco/244793/5 "2016-07-08T12:27:59Z")

</div>

gem install win32-process
