python线程池超过最大数量_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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值