Thanks for the reply Chris. Are you suggesting running the task in a *separate* process instead of a separate *thread*? Because if that's the case, I will have to share data (and possible memory) between that new process and my "master" process since they depend on one other.
Yeah I will sure post it if I can find an elegant solution. Thank you, LS > -----Original Message----- > From: Chris Lambacher [mailto:[EMAIL PROTECTED] > Sent: Tuesday, August 02, 2005 11:50 AM > To: Liu Shuai > Subject: Re: Terminate a thread that doesn't check for events > > Hi, > > There is no cross platform way to do this. You need to periodically check > a > quit flag, or perform a platform specific action to terminate it. On > Linux > you can send the process a signal. On windows you will need to use the > win32all package. If you decide to go the later route, maybe you could > encapsulate the thread termination code in a module and share it with the > Python community. > > -Chris > > On Tue, Aug 02, 2005 at 09:51:31AM -0400, Liu Shuai wrote: > > Can someone please comment on this? > > > > > > > > --------------------------------------------------------------------- > ----- > > > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf Of > Liu > > Shuai > > Sent: Monday, August 01, 2005 4:29 PM > > To: python-list@python.org > > Subject: Terminate a thread that doesn't check for events > > > > > > > > Hi all, > > > > > > > > I am aware that similar and probably same questions have been posted > many > > times, but I was unable to find a solution after reading a dozen > threads > > in the archive. So here it goes again. > > > > > > > > I have a thread that does some heavy task (hash calculation, for > > instance). I need a mechanism that works *across platforms* to stop > that > > calculation if user decides to exit. How can I do that? > > > > I can not do the standard "periodical checking" way since there is > only > > one function/step call in my thread. > > > > > > > > Here is a snippet of my thread classes to help illustrate the > problem: > > > > > > > > class Dispatcher(): > > > > def __init__(self): > > > > self.__worker = Worker() > > > > > > > > def start(self): > > > > self.__worker.start() > > > > > > > > def stop(): > > > > #how do i stop the worker? > > > > > > > > class Worker(threading.Thread): > > > > def __init__(self): > > > > > > > > def run(self): > > > > oneTimeConsumingCall() > > > > > > > > > > > > Thank you in advance for any suggestions/pointers. > > > > > > > > LS > > > -- > > http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list