Skip to content

This is a high concurrency general framework for rapid feature collection and processing.

Notifications You must be signed in to change notification settings

LNZ001/Data_Reprocessing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data_Reprocessing

This is a high concurrency general framework for rapid feature collection and processing.

这是一个对json/csv数据进行快速特征搜集和处理的高并发通用框架。

出发点

  1. 是由于需要大量的数据搜集和处理工作。当数据量过大时,numpy和pandas无论在占用内存还是在操作性能上都无法达到要求。
  2. 这其中有大量的工作是较为零散的,一次性的工作,但是有很多步骤是高度近似的,如何提高可复用性,同时避免过度冗余,保证高性能,就是当前遇到的主要问题。

关键需求和基本思想

  1. 高度模块化,能够利用该库快速构建,而不是尝试将所有需要构建成一个大的复杂类。(可以考虑元类编程等)

  2. 高可用,将过程数据适当解耦,当一个部分出现问题,可以只修改一个部分(根据需要,适当解耦成多个进程,这样可以局部修改重启)

  3. 高并发,实现充分利用多进程,对于目前遇到的需要大内存的,使用redis共享内存,并考虑异步框架。(需要关注redis一致性问题,避免先读后写问题)(测试后发现,直接使用内存还是更快一些,考虑基于C实现一个python的共享内存库)

  4. 较好的通用性和可复用性,并且对于新实现的代码,使用得当,不会或极少存在冗余。

  5. 需要减少每个函数,类的复杂度,减少条件判断,在设计之初就完成选择,而不是增加运行代码的逻辑。否则在有新的特殊需求时,很容易不得不修改原先设计的代码,参数变得冗长复杂,或者使得早期工作的代码不可用。

  6. 需要一个便捷的思路拆分大文件。

下一步工作

  1. 适当增加一些自动化的能力,如根据实际的内存大小,核心数调整参数。(提供一个"auto"的选项)

  2. 异常和错误处理功能。

具体实现框架

  1. 数据http查询和获取模块;(异步)

  2. 文件拆分模块;(异步)

  3. 数据推送和存储模块;(异步)

  4. 关键特征处理模块(异步,多进程)(主要用时部分)

    初始框架如图所示

image-0

代码实现及说明

待完善。

About

This is a high concurrency general framework for rapid feature collection and processing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages