diff options
Diffstat (limited to 'doc/code')
-rw-r--r-- | doc/code/pangemma.md | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/doc/code/pangemma.md b/doc/code/pangemma.md index ab014e4..ac65f37 100644 --- a/doc/code/pangemma.md +++ b/doc/code/pangemma.md @@ -115,10 +115,11 @@ I created a very minimalistic example in Ruby with a simple round robin schedule ## Running tasks in parallel In principle propnets make it trivially easy to run tasks in parallel. When inputs are complete the propagator goes into a -'compute' state and a process can be run (forked or on PBS) that executes a command. +'compute' state and a process can be run (forked or on PBS) that executes a command. The output file can be picked up to make sure the propagator completes and switches do the 'done' state. Note that actors and goblins would be perfect parallel companions to propagators with the potential advantage of keeping results in RAM. + We are not going there right now, but it is one of the important reasons to build this setup. ## Why guile and not ruby or python? Above example in Ruby is rather nice and we can build on that initially. -Ruby's multithreading capabilities (and that of python), however, are hampered by the layout of the interpreters and modules that can not be re-entered. Even with the slow disappearance of the global interpreter lock (GIL) these languages don't do great in that area. You can work around it (like I did with the really fast bioruby-vcf). +Ruby's multithreading capabilities (and that of python), however, are hampered by the layout of the interpreters and modules that can not be re-entered. Even with the slow disappearance of the global interpreter lock (GIL) these languages don't do great in that area. You can work around it by using copy-on-write processes (like I did with the really fast bioruby-vcf), but that gets clunky fast. |