#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-10-11 17:55:26
# @Author : Sheldon (thisisscret@qq.com)
# @blogs : 谢耳朵的派森笔记
# @Link : https://www.cnblogs.com/shld/
import pandas as pd
from joblib import Parallel, delayed def apply_parallel(df, func, n=-2):
"""利用 Parallel 和 delayed 函数实现并行运算,思路是把Dataframe分割喂给包含apply的函数
@params df: 需要apply的Dataframe
@params func: 包含apply的函数,(不是apply的参数那个函数),需自己定义,
@params n: n为线程数,默认为cpu数-1,-1为cpu数,可自定义
@return Dataframe: apply参数函数得到的Dataframe
   """ if n is None:
n = -1
dflength = len(df)
cpunum = cpu_count()
if dflength<cpunum:
spnum = dflength
if n<0:
spnum = cpunum+n+1
else:
spnum = n or 1 sp = list(range(dflength)[::int(dflength/spnum+0.5)])
sp.append(dflength)
slice_gen = (slice(*idx) for idx in zip(sp[:-1],sp[1:]))
results = Parallel(n_jobs=n)(delayed(func)(df[slc]) for slc in slice_gen)
return pd.concat(results)

pandas,apply并行计算的一个demo的更多相关文章

  1. angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

    曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示r ...

  2. 初识nginx之第一个demo

    商城项目做了一个多月了,想到必须用到负载均衡,简单了解了一下nginx,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.ba ...

  3. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  4. springMvc的第一个demo

    1.下载jar包 http://repo.spring.io/libs-release-local/org/springframework/spring/4.2.3.RELEASE/ 2.下载源码 j ...

  5. Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)

    在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. ...

  6. 如何在WTL和MFC中使用duilib及如何静态使用duilib库!(初级讲解 附带一个Demo)

    关于duilib的历史,我也就不多说了,能看到这篇文章的人都是有一定了解才能找到这个的. 我直接说下对这个库的基本使用吧. 我个人对一些好技术都是比较感兴趣的. 因为个人原因 喜欢接触一个好技术. 所 ...

  7. 白盒测试之gtest第一个demo

    认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示. 一.需要测试的C++代码: #include "myfunction.h" // ...

  8. 在VS中实现webService的一个demo(图解)

    在VS中实现webService的一个demo(图解) 先创建一个web项目,创建好web项目后,添加新建项——web服务 在新建好的web服务文件中写如下代码: 生成当前解决方案. 新建一个winf ...

  9. Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo

    近期在工作上有了比較大的转变,自学情绪也慢慢高涨,本来一直在研究unity的技术.由于换了工作会開始接触cocos2d-x.但并不意味着停止研究unity,以后有时间还是会继续的. 公司的cocos2 ...

随机推荐

  1. Windows远程命令执行0day漏洞安全预警

      网站安全云检测这不是腾讯公司的官方邮件. 为了保护邮箱安全,内容中的图片未被显示. 显示图片 信任此发件人的图片   一.概要 Shadow Brokers泄露多个Windows 远程漏洞利用工具 ...

  2. 说说GestureDetector.OnGestureListener onScroll函数

    public abstract boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) ...

  3. 如何查看linux版本 如何查看LINUX是多少位

    一.如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案! 1. 查看内核版本命令: 1) [root@q1test01 ~]# cat /proc/version Linux ...

  4. js aop 拦载实现

    var run = function(){ //is run } var aopBefore = function(){ //aopBefore } var tmpFn=run; run = func ...

  5. VIM正则表达式查找替换

      0. 一些需要注意的不同 VIM中的正则表达式和其他的有点不一样 (1) 有些符号要用\转义,比如\+表示重复一次或以上,其他的还有一些,:h pattern查看(2) 非贪婪匹配用\{-}, 如 ...

  6. 【SharePoint】K2 for SharePoint 安装笔记【未完工】

    0.安装环境说明 0.1.软件版本 OS : Window Server 2012 标准版 SharePoint : 2013标准版 K2 : 4.6.9 0.2.环境结构 SharePoint 20 ...

  7. day06_方法_20150806

    day06_方法_20150806 -------------------------回想:--------------------------------- 1.更佳适用情况       当---w ...

  8. iOS 自己定义页面的切换动画与交互动画 By Swift

    在iOS7之前,开发人员为了寻求自己定义Navigation Controller的Push/Pop动画,仅仅能受限于子类化一个UINavigationController,或是用自己定义的动画去覆盖 ...

  9. java与javax有什么区别?

    http://zhidao.baidu.com/question/8702158.html java和javax都是Java的API包,java是核心包,javax的x是extension的意思,也就 ...

  10. Controller层返回字符串

    刚开始练习,有时候想让Controller层返回一个字符串,但是他却去寻找这个字符串名字的jsp页面,结果肯定会是404的,研究了一会才明白过来,如果Controller需要返回一个值的话,需要再方法 ...