python 多进程并发demo
outline
下午需要简单处理一份数据,就直接随手写脚本处理了,但发现效率太低,速度太慢,就改成多进程了;
程序涉及计算、文件读写,鉴于计算内容挺多的,就用多进程了(计算密集)。
代码
import pandas as pd
from pathlib import Path
from concurrent.futures import ProcessPoolExecutor parse_path = '/data1/v-gazh/CRSP/dsf_full_fields/parse'
source_path = '/data1/v-gazh/CRSP/dsf_full_fields/2th_split' # 目录中有3.3W个csv文件,串行的话,效率大打折扣 def parseData():
source_path_list = list(Path(source_path).glob('*.csv'))
multi_process = ProcessPoolExecutor(max_workers=20)
multi_results = multi_process.map(func, source_path_list) def func(p):
source_p = str(p)
parse_p = str(p).replace('2th_split', 'parse')
df = pd.read_csv(source_p)
df['date'] = pd.to_datetime(df['date'].astype(str)).dt.date
df.sort_values(['date'], inplace=True)
# 处理close为负的值(abs),添加status标识
df['is_close'] = df['PRC'].map(lambda x: 0 if x < 0 or pd.isna(x) else 1)
df['PRC'] = df['PRC'].abs()
df.rename(columns={'CFACPR': 'factor'}, inplace=True)
df['adj_low'] = df['BIDLO'] * df['factor']
df['adj_high'] = df['ASKHI'] * df['factor']
df['adj_close'] = df['PRC'] * df['factor']
df['adj_open'] = df['OPENPRC'] * df['factor']
df['adj_volume'] = df['VOL'] / df['factor']
# calc change
df['change'] = df['adj_close'].diff(1) / df['adj_close'].shift(1)
df.drop_duplicates(inplace=True)
df.to_csv(parse_p, index=False) parseData()
python 多进程并发demo的更多相关文章
- Python多进程并发(multiprocessing)用法实例详解
http://www.jb51.net/article/67116.htm 本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Pyt ...
- python多进程并发和多线程并发和协程
为什么需要并发编程? 如果程序中包含I/O操作,程序会有很高的延迟,CPU会处于等待状态,这样会浪费系统资源,浪费时间 1.Python的并发编程分为多进程并发和多线程并发 多进程并发:运行多个独立的 ...
- python 多进程并发与多线程并发
本文对python支持的几种并发方式进行简单的总结. Python支持的并发分为多线程并发与多进程并发(异步IO本文不涉及).概念上来说,多进程并发即运行多个独立的程序,优势在于并发处理的任务都由操作 ...
- Python多进程并发操作进程池Pool
目录: multiprocessing模块 Pool类 apply apply_async map close terminate join 进程实例 multiprocessing模块 如果你打算编 ...
- python多进程并发
由于Python下调用Linux的Shell命令都需要等待返回,所以常常我们设置的多线程都达不到效果,因此在调用shell命令不需要返回时,使用threading模块并不是最好的方法. http: ...
- python多进程并发redis
Redis支持两种持久化方式RDB和AOF,RDB持久化能够快速的储存和回复数据,但在服务器停机时会丢失大量数据,AOF持久化能够高效的提高数据的安全性,但在储存和恢复数据方面要耗费大量的时间,最好的 ...
- [转]Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
- Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
- python 多进程并发接口测试实例
#encoding=utf-8 import requests import json import os import hashlib print "register------" ...
随机推荐
- nacos 实现同机器上启动三个服务
1.我们要在单台服务器上启动多个nacos实例,保证三个不同的端口,我们可以通过修改启动脚本: 打开启动脚本找到:export FUNCTION_MODE="all" 这一行 ...
- Jenkins连接Git仓库时候报错Permission denied, please try again.
一.连接GIT仓库报错 Failed to connect to repository : Command : stdout: stderr: Permission denied, please tr ...
- 防止xss攻击的前端的方法
项目当中在进行安全测试的时候,遇到了xss的攻击,要求前端来做个防御,针对于遇到的xss攻击,做个总结 1.xss---存储型xss的攻击 前端只要在接收到后台数据的时候做个特殊字符的过滤,即可抵制攻 ...
- MyBatis Plus 将查询结果封装到指定实体
MyBatis Plus 将查询结果封装到指定实体 思路 自定义方法,使用Wrapper,自定义映射结果集 Mapper接口 package com.mozq.boot.mpsand01.dao; i ...
- 【Spring AOP】切入点表达式(四)
一.切入点指示符 切入点指示符用来指示切入点表达式目的,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方 ...
- HardFault_Handler的方法转载
在硬汉平台看到一个比较好的帖子,关于如何定位HardFault_Handler,这里要记录下网址. http://www.armbbs.cn/forum.php?mod=viewthread& ...
- pycharm访问mysql数据库
不需要像eclipse那样添加驱动包,在pycharm里面下载一个pymysql包即可. 然后链接自己电脑的mysql并进行访问即可. 源码如下(参考博客:https://blog.csdn.net/ ...
- SSH使用ProxyCommand通过代理服务器远程连接其他服务器
当前环境拓扑图: 用户管理海外服务器,通过公网SSH远程时,由于网络质量原因公网丢包严重,这就导致管理员在对海外云主机进行管理时体验较差,表现形式可能是由于公网丢包严重执行命令卡顿,或者SSH进程 ...
- Leetcode61.旋转链表
链表中的点已经相连,一次旋转操作意味着: 先将链表闭合成环 找到相应的位置断开这个环,确定新的链表头和链表尾 class Solution{ public: ListNode* rotateRight ...
- 清理C盘临时文件脚本
@echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._m ...