前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python自定义线程池控制线程数量

python自定义线程池控制线程数量

作者头像
py3study
发布2020-01-07 11:59:03
9140
发布2020-01-07 11:59:03
举报
文章被收录于专栏:python3

1.自定义线程池

代码语言:javascript
复制
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信号的监控结合

代码语言:javascript
复制
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()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档