[Twisted-Python] Twisted, Threading, Extension Modules and the GIL

Grant McDonald gmcdonald at infocomp.com
Thu Mar 3 15:19:40 MST 2005


Hi everyone,

I have a threading question regarding Twisted and the explanation is a bit
long-winded but please bear with me.

The scenario:

I have created an automated build system in Python for PowerBuilder (awful
language) that allows a scheduler to assign build jobs to dispatcher
programs across a network.  These dispatchers have a GUI component coded in
wxPython.  The initial implementation involved also creating a separate
builder program that was spawned by the dispatchers when a build job was
received.  The builder code called an extension module to interface with the
low-level PowerBuilder compiler library.  This was done due to the fact the
calls to rebuild the application and deploy it are exceptionally
CPU-intensive and don't return for many minutes (approx. 30 or so for a
large application) and all attempts to include this in the dispatcher
resulted in the user interface freezing.

Recently I came across twisted documentation with regards to programming
using twisted threads.  As an experiment on this concept I amalgamated the
dispatcher and 
builder programs and called the builder code using the following:

d = threads.deferToThread(self.builder.newbuild(buildJob))
d.addCallback(self.builderFinished)

It should be noted that the extension module (a pyrex extension I have
created myself) implements the releasing and re-acquiring of the Global
Interpreter Lock for all blocking calls.  From my understanding this should
work but the user interface freezes.  Can someone please point me in the
direction of a solution?

Thanks,

Grant McDonald

-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20050304/58583981/attachment.html>


More information about the Twisted-Python mailing list