<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: A followup on Concurrency within Python</title>
	<atom:link href="http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/feed/" rel="self" type="application/rss+xml" />
	<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/</link>
	<description>python, programming and other things</description>
	<lastBuildDate>Thu, 11 Feb 2010 00:42:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-139267</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 18:02:01 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-139267</guid>
		<description>Kamaelia *does* look interesting. I am going to have to check it out.</description>
		<content:encoded><![CDATA[<p>Kamaelia *does* look interesting. I am going to have to check it out.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-139266</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 18:01:36 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-139266</guid>
		<description>The biggest thing to remember about the GIL is that is it not a boogeyman, but rather an implementation detail of the interpreter. It&#039;s design is such that it keeps the C implementation simple especially for extension writers.&lt;br&gt;&lt;br&gt;Removing the GIL, if done poorly, will grossly increase the complexity of the interpreter, slow C development down and make extension writing a nightmare.&lt;br&gt;&lt;br&gt;It&#039;s important to realize the benefits it does provide.</description>
		<content:encoded><![CDATA[<p>The biggest thing to remember about the GIL is that is it not a boogeyman, but rather an implementation detail of the interpreter. It&#39;s design is such that it keeps the C implementation simple especially for extension writers.</p>
<p>Removing the GIL, if done poorly, will grossly increase the complexity of the interpreter, slow C development down and make extension writing a nightmare.</p>
<p>It&#39;s important to realize the benefits it does provide.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-139265</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 17:59:07 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-139265</guid>
		<description>So do I - and I agree, it&#039;s not the final solution, it&#039;s only a library to help people get &quot;a&quot; (not The) job done.</description>
		<content:encoded><![CDATA[<p>So do I &#8211; and I agree, it&#39;s not the final solution, it&#39;s only a library to help people get &#8220;a&#8221; (not The) job done.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-139264</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 17:57:29 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-139264</guid>
		<description>It&#039;s not the implementation of Erlang that I&#039;m critiquing - I&#039;m very much pro-shared-little/nothing, ergo my liking of Adam Olsen&#039;s monitor work in the safethreading project. I have a bone to pick with erlang&#039;s syntax itself. &lt;br&gt;&lt;br&gt;I agree with you on the power of Erlang&#039;s model - however I think the barrier-to-entry of Erlang is why it continues to largely be a niche language. If Python were to adopt some of the theory behind what Erlang is done, I would be happy.</description>
		<content:encoded><![CDATA[<p>It&#39;s not the implementation of Erlang that I&#39;m critiquing &#8211; I&#39;m very much pro-shared-little/nothing, ergo my liking of Adam Olsen&#39;s monitor work in the safethreading project. I have a bone to pick with erlang&#39;s syntax itself. </p>
<p>I agree with you on the power of Erlang&#39;s model &#8211; however I think the barrier-to-entry of Erlang is why it continues to largely be a niche language. If Python were to adopt some of the theory behind what Erlang is done, I would be happy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-62095</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 14:02:01 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-62095</guid>
		<description>Kamaelia *does* look interesting. I am going to have to check it out.</description>
		<content:encoded><![CDATA[<p>Kamaelia *does* look interesting. I am going to have to check it out.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-62094</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 14:01:36 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-62094</guid>
		<description>The biggest thing to remember about the GIL is that is it not a boogeyman, but rather an implementation detail of the interpreter. It&#039;s design is such that it keeps the C implementation simple especially for extension writers.&lt;br&gt;&lt;br&gt;Removing the GIL, if done poorly, will grossly increase the complexity of the interpreter, slow C development down and make extension writing a nightmare.&lt;br&gt;&lt;br&gt;It&#039;s important to realize the benefits it does provide.</description>
		<content:encoded><![CDATA[<p>The biggest thing to remember about the GIL is that is it not a boogeyman, but rather an implementation detail of the interpreter. It&#39;s design is such that it keeps the C implementation simple especially for extension writers.</p>
<p>Removing the GIL, if done poorly, will grossly increase the complexity of the interpreter, slow C development down and make extension writing a nightmare.</p>
<p>It&#39;s important to realize the benefits it does provide.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-62091</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 13:59:07 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-62091</guid>
		<description>So do I - and I agree, it&#039;s not the final solution, it&#039;s only a library to help people get &quot;a&quot; (not The) job done.</description>
		<content:encoded><![CDATA[<p>So do I &#8211; and I agree, it&#39;s not the final solution, it&#39;s only a library to help people get &#8220;a&#8221; (not The) job done.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jnoller</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-62089</link>
		<dc:creator>jnoller</dc:creator>
		<pubDate>Fri, 28 Mar 2008 13:57:29 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-62089</guid>
		<description>It&#039;s not the implementation of Erlang that I&#039;m critiquing - I&#039;m very much pro-shared-little/nothing, ergo my liking of Adam Olsen&#039;s monitor work in the safethreading project. I have a bone to pick with erlang&#039;s syntax itself. &lt;br&gt;&lt;br&gt;I agree with you on the power of Erlang&#039;s model - however I think the barrier-to-entry of Erlang is why it continues to largely be a niche language. If Python were to adopt some of the theory behind what Erlang is done, I would be happy.</description>
		<content:encoded><![CDATA[<p>It&#39;s not the implementation of Erlang that I&#39;m critiquing &#8211; I&#39;m very much pro-shared-little/nothing, ergo my liking of Adam Olsen&#39;s monitor work in the safethreading project. I have a bone to pick with erlang&#39;s syntax itself. </p>
<p>I agree with you on the power of Erlang&#39;s model &#8211; however I think the barrier-to-entry of Erlang is why it continues to largely be a niche language. If Python were to adopt some of the theory behind what Erlang is done, I would be happy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joseph Lisee</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-62093</link>
		<dc:creator>Joseph Lisee</dc:creator>
		<pubDate>Fri, 28 Mar 2008 07:19:28 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-62093</guid>
		<description>Thank  you for speaking sense about concurrency in Python.  The project hosted at the website listed with this post would benefit in a large way from a CPython without a GIL.  I am glad someone else shares the view that python should give you tools to build your application, your way, not dictate its design.&lt;br&gt;&lt;br&gt;The code for the robotics system above uses more C++ code then needed because it needs true concurrency.  A python without a GIL would let us coders benefit from the reduction in code size you get when you go from C++ to python.&lt;br&gt;&lt;br&gt;-Joseph Lisee</description>
		<content:encoded><![CDATA[<p>Thank  you for speaking sense about concurrency in Python.  The project hosted at the website listed with this post would benefit in a large way from a CPython without a GIL.  I am glad someone else shares the view that python should give you tools to build your application, your way, not dictate its design.</p>
<p>The code for the robotics system above uses more C++ code then needed because it needs true concurrency.  A python without a GIL would let us coders benefit from the reduction in code size you get when you go from C++ to python.</p>
<p>-Joseph Lisee</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MichaelSparks</title>
		<link>http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/comment-page-1/#comment-62092</link>
		<dc:creator>MichaelSparks</dc:creator>
		<pubDate>Thu, 20 Mar 2008 16:59:46 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2008/03/17/a-followup-on-concurrency-within-python/#comment-62092</guid>
		<description>Hi there,&lt;br&gt;&lt;br&gt;You may find Kamaelia interesting - I&#039;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=&quot;http://kamaelia.sourceforge.net/SummerOfCode2008&quot; rel=&quot;nofollow&quot;&gt;http://kamaelia.sourceforge.net/SummerOfCode2008&lt;/a&gt; (linking there because there&#039;s an embedded presentation &amp; lots of links).&lt;br&gt;&lt;br&gt;You can find discussion of how multicore support was added here:&lt;br&gt;&lt;a href=&quot;http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&amp;nodeid=1205626569&quot; rel=&quot;nofollow&quot;&gt;http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=...&lt;/a&gt;&lt;br&gt;Rather than pyprocessing it uses pprocess since that seems sufficient. I&#039;ll take a look at pyprocessing though.&lt;br&gt;&lt;br&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;br&gt;&lt;br&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;br&gt;&lt;br&gt;&lt;br&gt;It just works. It seems to have similar inspiration as erlang, but I wasn&#039;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;br&gt;&lt;br&gt;cf &lt;a href=&quot;http://kamaelia.sourceforge.net/Introduction&quot; rel=&quot;nofollow&quot;&gt;http://kamaelia.sourceforge.net/Introduction&lt;/a&gt;&lt;br&gt;&lt;br&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;br&gt;&lt;br&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 (&quot;hormonal&quot; 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&#039;ll find &quot;The Official Handbook of Mascot : Version 3.1 : June 1987&quot;.  Perhaps scarily, their first version appears to have been in 1975....)&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://async.org.uk/Hugo.Simpson/&quot; rel=&quot;nofollow&quot;&gt;http://async.org.uk/Hugo.Simpson/&lt;/a&gt;&lt;br&gt;&lt;br&gt;OK, I&#039;ll get back to suggesting ideas for students for GSOC which are naturally highly concurrent, fun, in python beginner friendly and naturally multicore.&lt;br&gt;&lt;br&gt;Incidentally, there is also another difference between python &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=&quot;http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&amp;nodeid=1197930319&quot; rel=&quot;nofollow&quot;&gt;http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=...&lt;/a&gt;&lt;br&gt;&lt;br&gt;Kamaelia has proof of concept implementations in Java, C++ and ruby as well.&lt;br&gt;&lt;br&gt;Have fun :-)&lt;br&gt;&lt;br&gt;Michael.</description>
		<content:encoded><![CDATA[<p>Hi there,</p>
<p>You may find Kamaelia interesting &#8211; I&#39;ve been adding clean multicore support recently. You can find an overview of its design philosophy on our summer of code page here: <a href="http://kamaelia.sourceforge.net/SummerOfCode2008" rel="nofollow">http://kamaelia.sourceforge.net/SummerOfCode2008</a> (linking there because there&#39;s an embedded presentation &#038; lots of links).</p>
<p>You can find discussion of how multicore support was added here:<br /><a href="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&#038;nodeid=1205626569" rel="nofollow"></a><a href="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=.." rel="nofollow">http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=..</a>.<br />Rather than pyprocessing it uses pprocess since that seems sufficient. I&#39;ll take a look at pyprocessing though.</p>
<p>Single process pipeline:<br />Pipeline(<br />                Textbox(position=(20, 340),<br />                                 text_height=36,<br />                                 screen_width=900,<br />                                 screen_height=400,<br />                                 background_color=(130,0,70),<br />                                 text_color=(255,255,255)),<br />                TextDisplayer(position=(20, 90),<br />                                        text_height=36,<br />                                        screen_width=400,<br />                                        screen_height=540,<br />                                        background_color=(130,0,70),<br />                                        text_color=(255,255,255))<br />                )</p>
<p>Multiprocess pipeline:<br />ProcessPipeline(<br />                Textbox(position=(20, 340),<br />                                 text_height=36,<br />                                 screen_width=900,<br />                                 screen_height=400,<br />                                 background_color=(130,0,70),<br />                                 text_color=(255,255,255)),<br />                TextDisplayer(position=(20, 90),<br />                                        text_height=36,<br />                                        screen_width=400,<br />                                        screen_height=540,<br />                                        background_color=(130,0,70),<br />                                        text_color=(255,255,255))<br />                )</p>
<p>It just works. It seems to have similar inspiration as erlang, but I wasn&#39;t aware of erlangs execution model when I created Kamaelia. (It was more inspired by asynchronous hardware systems, unix pipelines, CSP and biological systems).</p>
<p>cf <a href="http://kamaelia.sourceforge.net/Introduction" rel="nofollow">http://kamaelia.sourceforge.net/Introduction</a></p>
<p>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).</p>
<p>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 (&#8220;hormonal&#8221; 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&#39;ll find &#8220;The Official Handbook of Mascot : Version 3.1 : June 1987&#8243;.  Perhaps scarily, their first version appears to have been in 1975&#8230;.)</p>
<p><a href="http://async.org.uk/Hugo.Simpson/" rel="nofollow">http://async.org.uk/Hugo.Simpson/</a></p>
<p>OK, I&#39;ll get back to suggesting ideas for students for GSOC which are naturally highly concurrent, fun, in python beginner friendly and naturally multicore.</p>
<p>Incidentally, there is also another difference between python &#038; concurrency in a functional language &#8211; the fact that objects in python are mutable. I blogged about some implications of this here:<br /><a href="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&#038;nodeid=1197930319" rel="nofollow"></a><a href="http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=.." rel="nofollow">http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=..</a>.</p>
<p>Kamaelia has proof of concept implementations in Java, C++ and ruby as well.</p>
<p>Have fun :-)</p>
<p>Michael.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
