<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for MichaelSparks</title><link>http://disqus.com/by/MichaelSparks/</link><description></description><atom:link href="http://disqus.com/MichaelSparks/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Thu, 20 Mar 2008 11:59:46 -0000</lastBuildDate><item><title>Re: A followup on Concurrency within Python</title><link>http://jessenoller.com/blog/2008/03/17/a-followup-on-concurrency-within-python/#comment-247932</link><description>&lt;p&gt;Hi there,&lt;/p&gt;&lt;p&gt;You may find Kamaelia interesting - I've been adding clean multicore support recently. You can find an overview of its design philosophy on our summer of code page here: &lt;a href="http://kamaelia.sourceforge.net/SummerOfCode2008" rel="nofollow noopener" target="_blank" title="http://kamaelia.sourceforge.net/SummerOfCode2008"&gt;http://kamaelia.sourceforge...&lt;/a&gt; (linking there because there's an embedded presentation &amp;amp; lots of links).&lt;/p&gt;&lt;p&gt;You can find discussion of how multicore support was added here:&lt;br&gt;&lt;a href="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&amp;amp;nodeid=1205626569" rel="nofollow noopener" target="_blank" title="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&amp;amp;nodeid=1205626569"&gt;http://yeoldeclue.com/cgi-b...&lt;/a&gt;&lt;br&gt;Rather than pyprocessing it uses pprocess since that seems sufficient. I'll take a look at pyprocessing though.&lt;/p&gt;&lt;p&gt;Single process pipeline:&lt;br&gt;Pipeline(&lt;br&gt;                Textbox(position=(20, 340),&lt;br&gt;                                 text_height=36,&lt;br&gt;                                 screen_width=900,&lt;br&gt;                                 screen_height=400,&lt;br&gt;                                 background_color=(130,0,70),&lt;br&gt;                                 text_color=(255,255,255)),&lt;br&gt;                TextDisplayer(position=(20, 90),&lt;br&gt;                                        text_height=36,&lt;br&gt;                                        screen_width=400,&lt;br&gt;                                        screen_height=540,&lt;br&gt;                                        background_color=(130,0,70),&lt;br&gt;                                        text_color=(255,255,255))&lt;br&gt;                )&lt;/p&gt;&lt;p&gt;Multiprocess pipeline:&lt;br&gt;ProcessPipeline(&lt;br&gt;                Textbox(position=(20, 340),&lt;br&gt;                                 text_height=36,&lt;br&gt;                                 screen_width=900,&lt;br&gt;                                 screen_height=400,&lt;br&gt;                                 background_color=(130,0,70),&lt;br&gt;                                 text_color=(255,255,255)),&lt;br&gt;                TextDisplayer(position=(20, 90),&lt;br&gt;                                        text_height=36,&lt;br&gt;                                        screen_width=400,&lt;br&gt;                                        screen_height=540,&lt;br&gt;                                        background_color=(130,0,70),&lt;br&gt;                                        text_color=(255,255,255))&lt;br&gt;                )&lt;/p&gt;&lt;p&gt;It just works. It seems to have similar inspiration as erlang, but I wasn't aware of erlangs execution model when I created Kamaelia. (It was more inspired by asynchronous hardware systems, unix pipelines, CSP and biological systems).&lt;/p&gt;&lt;p&gt;cf &lt;a href="http://kamaelia.sourceforge.net/Introduction" rel="nofollow noopener" target="_blank" title="http://kamaelia.sourceforge.net/Introduction"&gt;http://kamaelia.sourceforge...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I went into that (due to work modelling biological systems) with the assumption that whilst the primary communication would be akin to the nervous system (send and receive of pulses of information between processors) hence why the core of kamaelia is called Axon, that there would need to be an equivalent for a high latency, low use, but useful hormonal system. That boils down to a global key value store. (which will be migrating soon to an STM based store).&lt;/p&gt;&lt;p&gt;The interesting thing from my perspective is that this also mirrors a system from RAF Malvern from 30 years ago, called MASCOT which I heard about at christmas. That uses channels, instead of named inboxes/outboxes, and pools which are equivalent to our CAT ("hormonal" systems). MASCOT is utterly fascinating because they started from the same premise. I only recently heard about MASCOT (just before christmas), and the only reference I can find online is this, but if you scroll down, you'll find "The Official Handbook of Mascot : Version 3.1 : June 1987".  Perhaps scarily, their first version appears to have been in 1975....)&lt;/p&gt;&lt;p&gt;&lt;a href="http://async.org.uk/Hugo.Simpson/" rel="nofollow noopener" target="_blank" title="http://async.org.uk/Hugo.Simpson/"&gt;http://async.org.uk/Hugo.Si...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;OK, I'll get back to suggesting ideas for students for GSOC which are naturally highly concurrent, fun, in python beginner friendly and naturally multicore.&lt;/p&gt;&lt;p&gt;Incidentally, there is also another difference between python &amp;amp; concurrency in a functional language - the fact that objects in python are mutable. I blogged about some implications of this here:&lt;br&gt;&lt;a href="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&amp;amp;nodeid=1197930319" rel="nofollow noopener" target="_blank" title="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&amp;amp;nodeid=1197930319"&gt;http://yeoldeclue.com/cgi-b...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Kamaelia has proof of concept implementations in Java, C++ and ruby as well.&lt;/p&gt;&lt;p&gt;Have fun :-)&lt;/p&gt;&lt;p&gt;Michael.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">MichaelSparks</dc:creator><pubDate>Thu, 20 Mar 2008 11:59:46 -0000</pubDate></item></channel></rss>