Hi,

Thank you Christoph.
I still have another question. If we are using commands.getoutput() function inside the run() function then how do we handle the processes. Because this senario again hangs the Application Server.

Examples:

from ExamplePage import ExamplePage
from time import *
import commands
from threading import Thread, Event

class MyThread(Thread):

    def __init__(self, interval, id):
        Thread.__init__(self)
        self.interval = interval
        self.id = id
        self.time = None
        self.stop_event = Event()

    def run(self):
        #while not self.stop_event.isSet ():

            #self.time = ctime(time())
        result  =  commands.getoutput("pwd")        # if I change this with result = "Hello World" the whole program works fine but with this                                                                          command it again hangs the Application Server. I think it creates another sub process to run
                                                                        commands
            #print "thread", self.id, "done at", self.time
        print result
            #self.stop_event.wait(self.interval)

    def stop(self):
        print "thread", self.id, "shutdown"
        self.stop_event.set()
        self.join(1)

my_thread = []


for i in range(2):
        my_thread.append(MyThread(2, i))


from WebKit.AppServer import globalAppServer

for k in my_thread:
        globalAppServer.application().addShutDownHandler(k.stop)
for j in my_thread:
        j.start()
for k in my_thread:
        k.join ()
for j in my_thread:
        j.stop()
class ShowTime(ExamplePage):

    def writeContent(self):
        self.write('<h1>Thread Test</h1>')
        for k in my_thread:
                 self.write('<h2>Thread Number 'k' is executing </h2>')

Thanks in Advance.

Best Regards.....
Salman Toor.





On 1/13/07, Christoph Zwerschke < cito@online.de> wrote:
> Salman Toor wrote:
> > What is the proper way of using multi threaded application within WebKit.
> >
> > for example:
> >
> > # define a class that subclasses Thread
> > class showTime(threading.Thread):
> >
> >   # define instance constructor
> >   def __init__(self,interval,id):
> >      self.w = interval
> >       self.id = id
> >      threading.Thread.__init__(self)  # we are required to this
> >
> >   # define run method (body of the thread)
> >   def run(self):
> >      time.sleep (self.w)
> >      print "thread", self.id, "done at", time.ctime(time.time())
> >
> > how do i start the threads so that it can finish successfully and i
> > can shutdown my server and can restart it.
>
> Hi Salman,
>
> here is a simple example servlet. The thread is started when the servlet
> is first called and stopped when the AppServer stops.
>
> ---------------------------------------------------------------
>
> from ExamplePage import ExamplePage
> from time import *
>
> from threading import Thread, Event
>
> class MyThread(Thread):
>
>      def __init__(self, interval, id):
>          Thread.__init__(self)
>          self.interval = interval
>          self.id = id
>          self.time = None
>          self.stop_event = Event()
>
>      def run(self):
>          while not self.stop_event.isSet():
>              self.time = ctime(time())
>              print "thread", self.id, "done at", self.time
>              self.stop_event.wait(self.interval)
>
>      def stop(self):
>          print "thread", self.id, "shutdown"
>          self.stop_event.set()
>          self.join(1)
>
> my_thread = MyThread(2, 4711)
> from WebKit.AppServer import globalAppServer
> globalAppServer.application().addShutDownHandler(my_thread.stop)
> my_thread.start()
>
> class ShowTime(ExamplePage):
>
>      def writeContent(self):
>          self.write('<h1>Thread Test</h1>')
>          self.write('<h2>Last executed at: ', my_thread.time, '</h2>')
>
>
> ---------------------------------------------------------------
>
> Hope that helps.
>
> -- Christoph
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Webware-discuss mailing list
> Webware-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/webware-discuss
>