Python Implement Worker Threads with Queue

# Python Version: 2.7

import time

import threading

import thread

from Queue import Queue

# Global Queue

q = Queue()

num_worker_threads = 2

# worker to get item/message from the queue and process it.

def worker(q):

        while True:

                print("Waiting for Message ...{thread}\n".format(thread=thread.get_ident()))

                item = q.get()

                print("Message received...{thread}...{msg}\n".format(msg=item, thread=thread.get_ident()))

                if item is None:

                        q.task_done()

                        print("Stop worker!")

                        break

                do_work(item)

                q.task_done()

#function to process message

def do_work(item):

        print("Processing Message ...{thread}...{msg}\n".format(msg=item, thread=thread.get_ident()))

        print("sleep 5s...")

        time.sleep(5)

        print("Message Processed...{thread}..{msg}\n".format(msg=item, thread=thread.get_ident()))

# start worker threads

threads = []

for i in range(num_worker_threads):

        t=threading.Thread(target=worker, args=(q,))

        t.start()

        threads.append(t)

# Add items to the Queue

for item in ["AA", "BB", "CC"]:

        q.put(item)

# Stop all workers

for i in range(num_worker_threads):

        q.put(None)

你可能感兴趣的:(Python Implement Worker Threads with Queue)