Thank you for the help Chris and Jp. Just wanted to let you know that I re-wrote a "stoppable" version of the function I was calling in the thread instead of forcing the thread to terminate. I think it worth the effort as the solution is now clean and portable.
Thanks again for all your input. LS > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:python-list- > [EMAIL PROTECTED] On Behalf Of Chris Lambacher > Sent: Tuesday, August 02, 2005 12:16 PM > To: python-list@python.org > Subject: Re: Terminate a thread that doesn't check for events > > No. On Linux a separate thread is a separate process with shared memory. > You > can send a signal to a particular process and catch that signal as an > indication that you need to terminate (perhapse something that is set up > before running your long running process so that it is generic). In > windows > threads are separate beasts from processes(almost) and there are functions > for > terminating them (though I don't think gracefully). Unfortunately I can't > comment on other platforms. > > -Chris > > On Tue, Aug 02, 2005 at 11:54:57AM -0400, Liu Shuai wrote: > > 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 > -- > http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list