hwlgw at hotmail.com
Mon Oct 14 16:29:20 CEST 2002
After spending a day on trying to find a solution using threads, I
found out there is probably none. Argh!
I am trying to come up with a method to run a function in such a way
that the whole thing will take at most x milliseconds, with x a
reasonable value like 200. If the function is not finished by that
time, a default value should be used. If the function *does* finish
in time, the return value of the function should be used. The main
point is that the calling program should be able to continue with
the next statement after x milliseconds. And it would be nice if
the called function is interrupted or something if it has not
finished, so it will not eat CPU resources.
But I found this:
From: Tim Peters (tim.one at home.com)
Subject: RE: embedded python - cancel "while 1: pass"
Date: 2001-01-08 00:07:17 PST
Java's thread .stop(), .resume(), and .suspend() methods were all
deprecated, because they proved to be "inherently unsafe" in
practice. This isn't real surprising: a thread is cheaper than an
OS process largely because the runtime *doesn't* save enough info
to clean up a thread safely, short of the death of the process
it's running in.
Aha! So what I am trying to do is basically impossible with threads!
I guess some people have been here before. Anyway, thank you Tim
Peters. There should be a collection with Tim Peters' c.l.p.
postings you can search on subject. His postings have been useful for
me before! I found this one using google groups search.
What I am going to look into is how to write a function that will
start the target function in another *process* in Windows, and use a
default value if the process does not finish in time.
Multithreading will rot your teeth.
-- Michael Swaine
More information about the Python-list