Add named thread pool

This commit is contained in:
ForgQi committed 2022-02-26 22:08:48 +08:00
1 parent 9c37db3ba8
commit 32266eaaa8
2 files changed
+12 -13

No files matched your search

+9 -10
View File
@@ -21,9 +21,10 @@ class EventManager(Thread):
# 事件管理器开关
self.__active = True
# 事件处理线程池1
self._pool1 = ThreadPoolExecutor(pool1_size, thread_name_prefix='Asynchronous1')
# 事件处理线程池2
self._pool2 = ThreadPoolExecutor(pool2_size, thread_name_prefix='Asynchronous2')
self._pool = {
'Asynchronous1': ThreadPoolExecutor(pool1_size, thread_name_prefix='Asynchronous1'),
'Asynchronous2': ThreadPoolExecutor(pool2_size, thread_name_prefix='Asynchronous2')
}
# 阻塞函数列表
self.__block = []
@@ -47,10 +48,7 @@ class EventManager(Thread):
# 若存在,则按顺序将事件传递给处理函数执行
for handler in self.__handlers[event.type_]:
if handler.__qualname__ in self.__block:
if event.type_ == 'download':
self._pool1.submit(handler, event)
else:
self._pool2.submit(handler, event)
self._pool.get(handler.pool).submit(handler, event)
else:
handler(event)
@@ -59,8 +57,8 @@ class EventManager(Thread):
# 将事件管理器设为停止
self.__active = False
self.__eventQueue.put(None)
self._pool1.shutdown()
self._pool2.shutdown()
for pool in self._pool.values():
pool.shutdown()
def add_event_listener(self, type_, handler):
"""绑定事件和监听器处理函数"""
@@ -122,7 +120,7 @@ class EventManager(Thread):
return _event
self.add_event_listener(type_, wrapper)
wrapper.pool = block
return wrapper
else:
def decorator(func):
@@ -137,6 +135,7 @@ class EventManager(Thread):
callback(_event)
return _event
wrapper.pool = block
return wrapper
return decorator
+3 -3
View File
@@ -36,7 +36,7 @@ def create_event_manager():
event_manager = create_event_manager()
@event_manager.register(DOWNLOAD, block=True)
@event_manager.register(DOWNLOAD, block='Asynchronous1')
def process(name, url):
date = common.time_now(config['streamers'][name].get('title'))
try:
@@ -50,7 +50,7 @@ def process(name, url):
return Event(UPLOAD, (name, url, date))
@event_manager.register(UPLOAD, block=True)
@event_manager.register(UPLOAD, block='Asynchronous2')
def process_upload(name, url, date):
yield Event(BE_MODIFIED, (url, 2))
try:
@@ -72,7 +72,7 @@ class KernelFunc:
self.inverted_index = inverted_index
self.streamer_url = streamer_url
@event_manager.register(CHECK, block=True)
@event_manager.register(CHECK, block='Asynchronous1')
def singleton_check(self, platform):
plugin = self.checker[platform]
wait = config.get('checker_sleep') if config.get('checker_sleep') else 15