python自定義執行緒池控制執行緒數量

1.自定義執行緒池

import threading  import Queue  import time    queue = Queue.Queue()      def put_data_in_queue():      for i in xrange(10):          queue.put(i)      class MyThread(threading.Thread):      def run(self):          while not queue.empty():              sleep_times = queue.get()              time.sleep(sleep_times)              queue.task_done()      def main_function():      threads_num = 6      while True:          put_data_in_queue()          for i in xrange(threads_num):              myThread = MyThread()              myThread.setDaemon(True)              myThread.start()          queue.join()          time.sleep(60)

2.多執行緒與signal訊號的監控結合

import threading  import Queue  import time  import signal    queue = Queue.Queue()  stop = False      def receive_signal(signum, stack):      signal.signal(signal.SIGTERM, original_sigterm)      global stop      stop = True      def put_data_in_queue():      for i in xrange(10):          queue.put(i)      class MyThread(threading.Thread):      def run(self):          while not queue.empty():              sleep_times = queue.get()              time.sleep(sleep_times)              queue.task_done()      def main_function():      threads_num = 6      while not stop:          put_data_in_queue()          for i in xrange(threads_num):              myThread = MyThread()              myThread.setDaemon(True)              myThread.start()          queue.join()          time.sleep(60)      if __name__ == "__main__":      original_sigterm = signal.getsignal(signal.SIGTERM)      signal.signal(signal.SIGTERM, receive_signal)      main_function()