Out of a discussion on multithreading on the PyCon UK mailing list - it turns out that Kamaelia (a concurrency library) 'mainly' works on IronPython 2 now - which is great news. I believe Michael Sparks will be filing at least one bug report - but some issues that used to prevent it working have been fixed.

-------- Original Message --------
Subject:        Re: [pyconuk] Parallel Processing and Python
Date:   Fri, 3 Oct 2008 16:59:38 +0100
From:   Michael Sparks <[EMAIL PROTECTED]>
Organization:   Just little old me
To:     Michael Foord <[EMAIL PROTECTED]>
CC: [EMAIL PROTECTED], [EMAIL PROTECTED], Discussion of IronPython <[email protected]> References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>



Amongst everything you posted below I could only *see* problems with
using setuptools and distutils

Correct.

- neither of which I particularly expect to work unmodified in IronPython
for the *forseeable* future.

Ahhh, I didn't realise that. That means fundamentally you can view it as driver error in that case. If there's a preferred packaging scheme for IronPython, I'll see if we can support that as well.

I wasn't aware of the various points, that explains a lot. Well in which case, more works than can be expected :)

As far as I could *see* actually *using* Kamaelia worked fine (other
than the echoer server client disconnection issue you mentioned) - am I
reading that right? If so it is a massive step forward and fantastic news.

Yes, it is a massive step forward and it is *fantastic* news.

Whilst the examples I posted are relatively simple, I know which areas that are getting exercised by this - like putting select in a different thread, communications using Queue.Queue, things like multiple yield statements in generators etc.

This does mean that all the examples I've posted will fairly trivially be multicore :-)

Since posting the last message, I've also tested TCPClient, which used to exercise a particular bug in IronPython because of this structure:

[snip]
                 yield 2
              raise Finality
           except Exception, x:
              result = sock.shutdown(2) ; yield 3
              raise x  # XXXX If X is not finality.. [snip]
        except Exception, x:
           sock.close() ;  yield 4,x # XXXX If X is not finality.. [snip]
           raise x
     except Finality:
        yield 5
     except socket.error, e:
        # We now do the flipside of setupCSA, whether we had an error or not
        # A safe error relates to a disconnected server, and unsafe error is
[snip]

In case that looks odd, it's due to the issue that try:...finally:... is not legal inside a generator in python pre-2.5. This particular structure used to cause problems for IronPython, and I'm glad to see that's been fixed:

C:\Program Files\IronPython 2.0 Beta 5>ipy.exe
IronPython 2.0 Beta (2.0.0.5000) on .NET 2.0.50727.1433
Type "help", "copyright", "credits" or "license" for more information.
import Axon
import Kamaelia
from Kamaelia.Chassis.Pipeline import Pipeline
from Kamaelia.Util.Console import *
from Kamaelia.Internet.TCPClient import TCPClient
Pipeline(
...     ConsoleReader(),
...     TCPClient("132.185.142.2", 80),
...     ConsoleEchoer(),
... ).run()

Then the output of that run: (GET .. etc is typed by me)

GET / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 03 Oct 2008 14:19:40 GMT
Server: Apache/2.0.49 (Linux/SuSE)
Last-Modified: Wed, 21 May 2008 21:14:05 GMT
ETag: "32663b2-6f-139fa140"
Accept-Ranges: bytes
Content-Length: 111
Connection: close
Content-Type: text/html; charset=ISO-8859-1

<html>
<body bgcolor="#ffffff">

<p> Today's fish is trout ala creme, please enjoy your meal.

</body>
</html>
Traceback (most recent call last):
 File "", line unknown, in <module>
 File "Snippets.scripting", line unknown, in run
 File "Snippets.scripting", line unknown, in runThreads
 File "Microsoft.Scripting.Core", line unknown, in MoveNext
 File "Snippets.scripting", line unknown, in main
ValueError: list.index(item): item not in list

Could you post details of the disconnection issue?

I had wanted to check whether it was a Kamaelia bug. However, it looks like it is an IronPython issue. However, running the above example shows up the same bug in IronPython - where as it functions correctly on CPython.

:-)

That said, I really think that is a massive jump forward for Kamaelia on IronPython and think it's fantastic news :)

Regards,


Michael.


--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/
http://www.trypython.org/
http://www.ironpython.info/
http://www.theotherdelia.co.uk/
http://www.resolverhacks.net/

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to