网络编程
位置:首页>> 网络编程>> Python编程>> python自定义线程池控制线程数量的示例

python自定义线程池控制线程数量的示例

作者:AdgerZhou  发布时间:2022-12-25 15:16:13 

标签: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()

来源:https://blog.csdn.net/qq_18863573/article/details/54090826

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com