1.1 --- a/parallel.py Mon Sep 26 21:59:16 2005 +0000
1.2 +++ b/parallel.py Mon Sep 26 22:26:22 2005 +0000
1.3 @@ -72,7 +72,7 @@
1.4
1.5 import os
1.6 import sys
1.7 -from select import select
1.8 +import select
1.9 from signal import signal, SIGCHLD
1.10
1.11 try:
1.12 @@ -96,6 +96,16 @@
1.13 self.read_pipe = read_pipe
1.14 self.write_pipe = write_pipe
1.15
1.16 + def __del__(self):
1.17 +
1.18 + # NOTE: Hack until the signals vs. pipes behaviour is fixed.
1.19 +
1.20 + if self.pid != 0:
1.21 + try:
1.22 + os.wait()
1.23 + except OSError:
1.24 + pass
1.25 +
1.26 def send(self, obj):
1.27
1.28 "Send the given object 'obj' through the channel."
1.29 @@ -136,10 +146,13 @@
1.30 to be read from.
1.31 """
1.32
1.33 - if timeout is not None:
1.34 - t = select(self.readables.keys(), [], [], timeout)
1.35 - else:
1.36 - t = select(self.readables.keys(), [], [])
1.37 + try:
1.38 + if timeout is not None:
1.39 + t = select.select(self.readables.keys(), [], [], timeout)
1.40 + else:
1.41 + t = select.select(self.readables.keys(), [], [])
1.42 + except select.error:
1.43 + return []
1.44
1.45 readable_fds, writable_fds, exceptional_fds = t
1.46 readable = [self.readables[fd] for fd in readable_fds]
1.47 @@ -186,9 +199,9 @@
1.48
1.49 # Define and install a handler which waits for terminated child processes.
1.50
1.51 -def handler(number, frame):
1.52 - os.wait()
1.53 +#def handler(number, frame):
1.54 +# os.wait()
1.55
1.56 -signal(SIGCHLD, handler)
1.57 +#signal(SIGCHLD, handler)
1.58
1.59 # vim: tabstop=4 expandtab shiftwidth=4