Is it possible to run two "while 1:" loops in two threadings respectively?

zxo102 zxo102 at gmail.com
Wed Jul 18 23:34:21 EDT 2007


On 7 17 ,   3 01 , "Diez B. Roggisch" <de... at nospam.web.de> wrote:
> zxo102 schrieb:
>
>
>
>
>
> > Hi,
> >    I would like to combine two python applications into a single one
> > with two threadings. Both of them have a "while 1:" loop respectively.
> > For example, one application is to monitoring serial port 'com1' and
> > another application is a TCP/IP server which has used threadings
> > already. I write the following demo code but it does not work right.
> > It stays in the first "while 1:" and never thingOne.start(). The
> > second threading never be started.
> > Any ideas?
>
> > Thanks a lot.
>
> > Ouyang
> > #################################################################
> > import threading, time
> > class serial_port_com1:
> >   def spc(self):
> >      i = 0
> >      while 1:
> >    time.sleep(5)
> >    print "%d: hello, I am here in spc()"%i
> >    i += 1
>
> > class TCP_IP:
> >   def tcpip(self):
> >      i = 0
> >      while 1:
> >    time.sleep(5)
> >    print "%d: hello, I am here in tcpip()"%i
> >    i += 1
>
> > class ThreadOne ( threading.Thread ):
> >    def run ( self ):
> >       print 'Thread', self.getName(), 'started.'
> >       time.sleep ( 5 )
> >       print 'Thread', self.getName(), 'ended.'
>
> > class ThreadTwo ( threading.Thread ):
> >    def run ( self ):
> >       print 'Thread', self.getName(), 'started.'
> >       thingOne.join()
> >       print 'Thread', self.getName(), 'ended.'
>
> > if __name__=="__main__":
> >    spc  = serial_port_com1()
> >    tcpip = TCP_IP()
> >    thingOne = ThreadOne(target=spc.spc())
> >    thingOne.start()
> >    thingTwo = ThreadTwo(target=tcpip.tcpip())
> >    thingTwo.start()
>
> There are several problems here. First of all, one either subclasses
> Thread and implements run - then your code should look like this:
>
> class ThreadTwo(Thread):
>        def run(self):
>              tcpip.tcpip()
>
> Or you don't subclass Thread and pass a target. But that target must be
> a function. You don't pass a function, you call it!!
>
> Look at this:
>
> Thread(target=tcpip.tcpip)
>
> Note the missing parentheses!
>
> Apart from that, you should seriously consider applying a consistent
> naming style to your code.
>
> Diez-         -
>
> -         -

Diez,
   Thanks for your reply. I have tried the both you suggested. First
one works and second one does not. I am using "subclass thread" way to
implement my application. Thanks a lot.
ouyang




More information about the Python-list mailing list