Python 一行代码实现并行
需求
给定一个list 针对list 中每个元素执行一定的操作(这个操作很费时间,例如爬数据的时候调用某个网站的接口),返回操作后的list
例如 给定 1-10个数,在每个数字后面加个字母a
方法
1、利用线程池pool 及map 函数 实现
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
import time
pool = ThreadPool(10) #定义函数
def add(x):
time.sleep(0.2)
return str(x) + 'a' ll = list(range(0,10)) #原始map
start = time.time()
res = map(add, ll)
print res
print time.time() - start #线程池map
start = time.time()
res = pool.map(add,ll)
print res
print time.time() - start

结论:
可以发现 运行时间缩短了。一定要保证所执行的函数比较费时间,才可以用,否则 大部分时间都用在分发任务上了,
多线程不一定比单线程快。 感兴趣的同学可以试试把time.sleep()去掉。
python3
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
import multiprocessing
import time import numpy as np def cal_sim(A,B): A = np.array(A)
B = np.array(B)
num = A.T * B #若为行向量则 A * B.T
num = num.sum()
denom = np.linalg.norm(A) * np.linalg.norm(B)
cos = num / denom #余弦值
sim = 0.5 + 0.5 * cos #归一化
return sim #线程池map
start = time.time()
A_list = [np.array([1]),np.array([5])]
B_list = [np.array([2]),np.array([3])] with multiprocessing.Pool(processes=3) as pool:
results = pool.starmap(cal_sim, zip(A_list,B_list))
print (results)
参考:
http://python.jobbole.com/81690/
Python 一行代码实现并行的更多相关文章
- Python一行代码
1:Python一行代码画出爱心 print]+(y*-)**-(x**(y*<= ,)]),-,-)]) 2:终端路径切换到某文件夹下,键入: python -m SimpleHTTPServ ...
- 【python】10分钟教你用python一行代码搞点大新闻
准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python. ...
- Python一行代码搞定的事情
python -m SimpleHTTPServer 8000 http://127.0.0.1:8000/ 有了这一行代码分享本地盘内容就不需要FTP了. pydoc:Python文档工具 pyth ...
- python一行代码就能搞定的事情!
打印9*9乘法表: >>> print( '\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) ...
- Python 一行代码
Python语法十分便捷,通过几个简单例子了解其趣味 1.Fizz.Buzz问题为: 打印数字1到100, 3的倍数打印"Fizz", 5的倍数打印"Buzz" ...
- Python一行代码实现快速排序
上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡.选择.插入.希尔.归并),因为快速排序的重要性,所以今天将单独为大家介绍一下快速排序! 一.算法介 ...
- Python一行代码处理地理围栏
最近在工作中遇到了这个一个需求,用户设定地理围栏,后台获取到实时位置信息后通过与围栏比较,判断是否越界等. 这个过程需要用到数据协议为GEOjson,通过查阅资料后,发现python的shapely库 ...
- python一行代码开启http
python -m SimpleHTTPServer 8000 & 监听8000端口 浏览器用127.0.0.1:8000访问 如果出现no module named SimpleHTTPSe ...
- Python一行代码获得IP地址
比较靠谱的方法, 通过构造UDP包获得本机IP地址 python -c "import socket;print([(s.connect(('8.8.8.8', 53)), s.gets ...
随机推荐
- ffmpeg 日志系统av_log()
一般使用Error, Warning, Debug3个级别即可(见下面的颜色).AV_LOG_QUIET 核心函数只有一个:av_log().使用av_log()在控制台输出日志的效果如下图所示. a ...
- find命令结合cp bash mv 命令使用的4种方式
工作经常需要用find结合其它命令一起使用,下面介绍4种结合方式. 例: 用find查找/data目录下,以.txt文件结尾的文件并复制到/tmp下 方法一 find与|xargs是黄金搭档,-t 参 ...
- Oracle启动中,startup nomount、 startup mount 有什么差别?
Oracle启动中,startup nomount. startup mount 有什么差别? 解答: startup nomount:启动实例,读取参数文件,分配内存空间,启动后台进程,打开跟踪文件 ...
- canvas图片base64编码后,ajax提交到后台
如题,直接上JS var imgData = canvas.toDataURL("image/png"); var data = imgData.substr(22); $.pos ...
- C++ Base64编码解码、MD5及TEA加密解密
Crypto.h以及Crypto.cpp Crypto.h 123456789101112131415161718192021222324252627282930313233343536373839 ...
- @RequestParam 注解
@RequestParam 注解org.springframework.web.bind.annotation.RequestParam注解类型用于将指定的请求参数赋给方法中的形参.使用@Reques ...
- github删除已经push到服务器上的commit的方法
使用两条指令: git reset --hard <commit_id> git push origin HEAD --force 其中commit_id是你想回到的commit的id(即 ...
- FZU1465
题目链接:传送门 题目大意:给你n个整数(可正可负),求有多少个连续的子序列的和==m(时限1S) 题目思路:前缀和+手写hash(map效率太慢,会超时) 具体做法是用一个数组sum,数组的第i位保 ...
- JPA的坑多服务主键重复
配置如下 @Id @GeneratedValue(generator="generator") @GenericGenerator(name="generator&quo ...
- 关于修改react的启动端口
在package.json文件里面,加一个port端口号就ok了