Hello, On Fri, Nov 12, 2010 at 12:00:55PM -0800, Brett Bowman wrote: > MRAB - > I've tried worker threads, and it kills the > thread only and not the program as a whole. I > could use that as a work-around, but I would > prefer something more direct, in case other > problems arise.
Looks like the gfx module doesn't raise an exception but terminates the thread instead (strange that not the whole process -- I'd use strace/truss/tusc to see what happens). So running gfx's render() tasks in separate threads or processes may be your only workaround. BTW, when your child process dies it's good idea to find out the cause of its death. So you can check its: * exitcode/WTERMSIG/WCOREDUMP * stderr/stdout (if you run it through popen*()) * your own IPS, like e.g. child process sending some short message over the pipe/socket that describes what it's about to do (like in your example below): > import gfx > print "1" > doc = gfx.open("pdf", MY_FILE) > print "2" > page1 = doc.getPage(1) > print "3" > g_img = gfx.ImageList() > print "4" > g_img.startpage(a_page.width,a_page.height) > print "5" > a_page.render(g_img) > print "6" > g_img.endpage() > print "7" > g_img.save(TEMP_PNG) > > which prints the following: > > 1 > 2 > 3 > 4 > 5 This way a parent process can tell that its child most has died during a_page.render(g_img)... -- With best regards, xrgtn -- http://mail.python.org/mailman/listinfo/python-list