Multi-Threading and KeyboardInterrupt
Mike Kazantsev
mk.fraggod at gmail.com
Tue Jun 16 01:12:17 EDT 2009
On Mon, 15 Jun 2009 15:43:13 -0400
Matt <hellzfury at gmail.com> wrote:
> I'm going to use the multipocessing library from here forward so I can
> take advantage of multiple cores and clusters. Either one should work
> for my use, since in my non-demonstration code each thread spends most
> of it's time waiting for a separate non-Python subprocess (created
> with subprocess.Popen) to finish anyway. (I guess Python would see
> this as IO-blocking) Therefore, if you can fix my toy example with
> threading, that's fine.
>
> DB.py, followed by a KeyboardInterrupt yields the output in a.out. I
> want roughly the output in desired.out.
>
> What do I need to do to modify this code to get my desired output and
> corresponding functionality? It would be a shame if this wasn't
> possible in any pure-Python way.
I don't know how complex task you have, but solving trivial IO blocks
with threads or subprocesses look either like ugly hack or an overkill
to me.
Why not just use I/O without blocking?
It's not 80s or 90s anymore, where you had to create subprocess to
handle every non-synchronous task, and since the main burden will be
pushed into non-py subprocesses already, why not implement controller
as a nice, clean and simple single-threaded event loop?
Consider this recipe:
http://code.activestate.com/recipes/576759/
And if the task before you is complex indeed, involving more than just
two to five child processes with a simple "while True: ..." loop,
consider using twisted framework - it'll allow you to do incredible
stuff with any number of sockets with just few lines of code in a
clean, abstracted way.
Latter would also mean that you can always replace os pipes with network
sockets just by changing transport name, distributing your app to any
number of machines.
--
Mike Kazantsev // fraggod.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 205 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20090616/3d5f856f/attachment-0001.sig>
More information about the Python-list
mailing list