进程池与线程池在数据仓库迁移中的多并发应用
2017-07-12 22:49
218 查看
博客核心内容:
(一)1、进程池并发应用
代码示例:
运行结果展示:
1、进程池并发应用 2、线程池并发应用
(一)1、进程池并发应用
代码示例:
#!/usr/bin/python # -*- coding:utf-8 -*- """ function:本程序的目的是替代shell脚本,实现拷贝数据的功能 """ from multiprocessing import Process,Pool import os import subprocess def copy_data(line): source_destination,target_destination = line.strip().split("#") print("source_destination is :%s" % source_destination) print("target_destination is :%s" % target_destination) command = " hadoop fs -du -s %s | awk '{print %s}' "%(source_destination,"$1") res_size = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).stdout.read().decode("utf-8") num_map = ( int(res_size)// 1024 // 1024 // 256 + 1) if num_map <= 6: num_map = 6 elif num_map >= 3000 num_map = 10000 else: num_map = num_map cmd = "hadoop distcp -update -skipcrccheck -delete -m %s %s %s"%(num_map,source_destination,target_destination) print("\033[41;1m%s\033[0m" %cmd,end="\n\n") subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) if __name__ == '__main__': pool = Pool(processes=200) with open("distcp.list",mode="r",encoding="utf-8") as fr: for line in fr.readlines(): pool.apply_async(func=copy_data,args=(line,)) pool.close() pool.join() print("数据拷贝完毕!")
运行结果展示:
相关文章推荐
- Python多进程并发操作中进程池Pool的应用
- 数据仓库在信息管理中的现实应用
- (7)java5线程并发库的应用(线程池)
- 使用concurrent.futures模块并发,实现进程池、线程池
- Java多线程与并发应用-(7)-线程池
- java多线程并发库高级应用 之 多个线程之间共享数据的方式探讨
- Java多线程与并发应用-(6)-多个线程之间共享对象和数据的方式
- 多线程并发库高级应用 之 java5中的线程并发库--线程池、Callable&Future
- 数据挖掘导论(学习笔记)——2.5 数据仓库应用实例
- SVN数据仓库迁移
- laravel 数据迁移与填充的应用总结
- 应用迁移,流量切换,数据切换. mysql 同步. 同构,异构两种情况分析.
- 数据仓库应用(三): SQL Server 2005的数据仓库应用--联机分析OLAP
- Java多线程与并发库高级应用之线程数据交换Exchanger
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
- Java多线程与并发库高级应用之线程池
- 数据仓库专题(23):总线矩阵的另类应用-Drill Down into a More Detailed Bus Matrix
- 【简介】SmartE智能数据抽取-应用集中分离/数据集中分散/数据仓库
- java并发与线程池应用
- 设计模式的实际应用——在C#中解决单客户端窗口数据并发问题