在日志分析脚本中,利用多进程并行处理同一server上的多个日志文件
但是一个子进程处理一份日志文件过程中,亦有大量循环处理(串行)的情况,所以考虑若在该子进程中将一些任务改为多线程,应该可以获得较明显的提升。
就下来使进程池中嵌套线程池的一些研究实验
来看一个示例脚本
from concurrent.futures import ThreadPoolExecutor
from multiprocessing import Process,Pool
import time
max_workers = 10
# tp=ThreadPoolExecutor(max_workers=max_workers)
def sleep_(j, k):
print(__name__)
time.sleep(j)
print('{}: sleep '.format(k))
def main(n):
# 注意tp的三个位置,看结果放到哪里都一样
# 但是放到这里,两个子进程调用的tp对象是不同的
tp = ThreadPoolExecutor(max_workers=10)
for i in range(10):
res = tp.submit(sleep_,3,i) #非阻塞