Terminate a thread that doesn't check for events
Liu Shuai
lshuai at kaneva.com
Tue Aug 2 11:54:57 EDT 2005
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:lambacck at computer.org]
> 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: python-list-bounces+sliu=kaneva.com at python.org
> > [mailto:python-list-bounces+sliu=kaneva.com at python.org] On Behalf
Of
> Liu
> > Shuai
> > Sent: Monday, August 01, 2005 4:29 PM
> > To: python-list at 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
More information about the Python-list
mailing list