Hello,

I am building a server program. I have seen some examples like the following:

        import pickle
        import Queue
        import socket
        import threading
        # We'll pickle a list of numbers, yet again:
        someList = [ 1, 2, 7, 9, 0 ]
        pickledList = pickle.dumps ( someList )
        # A revised version of our thread class:
        class ClientThread ( threading.Thread ):
        # Note that we do not override Thread's __init__ method.
        # The Queue module makes this not necessary.
        def run ( self ):
        # Have our thread serve "forever":
        while True:
        # Get a client out of the queue
        client = clientPool.get()
        # Check if we actually have an actual client in the client variable:
        if client != None:
        print 'Received connection:', client [ 1 ] [ 0 ]
        client [ 0 ].send ( pickledList )
        for x in xrange ( 10 ):
        print client [ 0 ].recv ( 1024 )
        client [ 0 ].close()
        print 'Closed connection:', client [ 1 ] [ 0 ]
        # Create our Queue:
        clientPool = Queue.Queue ( 0 )
        # Start two threads:
        for x in xrange ( 2 ):
        ClientThread().start()
        # Set up the server:
        server = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
        server.bind ( ( '', 2727 ) )
        server.listen ( 5 )
        # Have the server serve "forever":
        while True:
        clientPool.put ( server.accept() )

Since the server main thread and child thread will run forever, my question is 
how can I exit the server nicely in the program when it is required (e.g no 
clients coming for a while) rather than using 'Ctrl-c' or kill the process. 

another question is: Is that when the main thread is killed, then the child 
thread will stop as well? In this case, before killing the main thread, we have 
to make sure the child thread already finish its job.  But how the main thread 
know whether the child thread finish the job or not. in other words, how does 
the main thread communicate the child thread? 

Anybody know? Thanks in advance!

Best Wishes,

Wendy Yang

_______________________________________________
python-uk mailing list
python-uk@python.org
http://mail.python.org/mailman/listinfo/python-uk

Reply via email to