python自定义线程池控制线程数量的示例
时间:2022-04-02 10:19 作者:admin
1.自定义线程池
import threadingimport Queueimport 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 threadingimport Queueimport timeimport 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()
以上这篇python/' target='_blank'>python自定义线程池控制线程数量的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
(责任编辑:admin)