Python 多重处理和组合 DF

2024-03-22

我正在将一个大数据源读入 pandas 并将其分成 3 个块。我想使用多重处理,以便我可以同时完成每个块的分析功能。每个函数之后的输出是一个数据帧。然后我需要组合这三个小数据框。

#This part creates an empty dataframe with the correct column names
d = {'ID': [''], 'Title': [''],'Organization': [''], 'PI': [''],'PI_Phone': [''], 'PI_Email': [''],
     'Start_Date': [''], 'End_Date': [''],'FY': [''], 'Funding': [''], 'Abstract': [''],
     'URL': [''],'Street': [''], 'City': [''],'State': [''], 'Zip': [''],'Country': ['']}
data = pd.DataFrame(data=d)

def algorithm(df):
    print('Alg Running')
    df['Abstract'] = df['Abstract'].fillna(value='Abstract')
    df['Abstract'] = df['Title'] + ' : ' + df['Abstract']
    wide_net = df[df['Abstract'].str.lower().str.contains('|'.join(tissue+te_abstract+temp_abstract+tx_abstract+armi_abstract+['cell ','tissue','organ ']),na=False)]
    return wide_net

def chunk1():
    print('chunk1')
    therange = 0
    df1 = pd.read_sql(('SELECT * FROM Clean_SBIR LIMIT {},1000;').format(therange), con=conn)
    return algorithm(df1)
def chunk2():
    print('chunk2')
    therange = 1000
    df2 = pd.read_sql(('SELECT * FROM Clean_SBIR LIMIT {},1000;').format(therange), con=conn)
    algorithm(df2)
def chunk3():
    print('chunk3')
    therange = 2000
    df3 = pd.read_sql(('SELECT * FROM Clean_SBIR LIMIT {},1000;').format(therange), con=conn)
    algorithm(df3)

# creating processes
p1 = multiprocessing.Process(target=chunk1())
p2 = multiprocessing.Process(target=chunk2())
p3 = multiprocessing.Process(target=chunk3())

# starting process 1
p1.start()
# starting process 2
p2.start()
# starting process 3
p3.start() 

#This is where I am struggling
results = pd.concat([chunk1(),chunk2(),chunk3()])

# wait until process 1 is finished 
p1.join() 
# wait until process 2 is finished 
p2.join()
# wait until process 3 is finished 
p3.join()


print('done')

我的算法函数返回正确的数据,然后 chunk1 也返回正确的数据,但我不知道如何组合它们,因为多处理阻碍了。


上面看起来有点奇怪,也许重构如下:

from multiprocessing import Pool

SQL = 'SELECT * FROM Clean_SBIR LIMIT %s, %s'

def process_data(offset, limit):
    df = pd.read_sql(SQL, conn, params=(offset, limit))
    return algorithm(df)

with Pool(3) as pool:
   jobs = []
   limit = 1000
   for offset in range(0, 3000, limit):
      jobs.append((offset, limit))
   final_df = pd.concat(pool.starmap(process_data, jobs))

基本上,您不必要地重复了代码,并且没有从块处理算法返回结果。

也就是说,您可能不想做这样的事情。所有数据都是picked https://docs.python.org/3/library/pickle.html进程之间,这是@Serge 的观点的一部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 多重处理和组合 DF 的相关文章

  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 如何使用 Selenium 和 ChromeDriver 解决 TypeError: 'module' object is not callable 错误 [重复]

    这个问题在这里已经有答案了 代码试验 from selenium import webdriver from selenium webdriver chrome options import Options as Chromeoptions
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • Android 中的处理程序与异步调用

    目前我正在使用处理程序来调用 Web 服务方法以使其在后台运行 问题是它需要更多的时间来给出响应 在性能方面似乎更昂贵 现在我计划使用异步调用 哪一个是最好的 Android 中的处理程序和异步调用有什么区别 请帮我想出一个最好的解决方案
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 如何从pandas中的多列计算多列

    我正在尝试使用函数从 pandas 数据框中的多个列计算多个列 该函数采用三个参数 a b 和 c 并返回三个计算值 sum prod 和 quot 在我的 pandas 数据框中 我有三个列 a b 和 c 我想从中计算列 sum pro
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • 错误:无法为具有多个返回值的查询创建 TypedQuery

    我尝试用java和jpa来实现searchBook功能 我有两门课 即媒体课和图书课 书籍延伸了媒体 我将数据保存在不同的表中 我尝试从下面的查询中选择数据 TypedQuery
  • 如何分析 AngularJS 组件的性能基准?

    作为一项要求 我必须根据模拟数据分析几个 AngularJS 组件 例如 ng grid IE8 Chrome 和 FF 中的数据表 的性能基准 我有模拟数据 现在 当使用 IE8 Profiler 时 我得到了几个函数的时间 毫秒 根据
  • 使用 GHC 泛型定义类似“mempty”的函数?

    我正在为 Zoho REST API 编写一个客户端库 并且有一堆不同的记录类型 其中包含所有内容Maybe a字段 即 data Approval Approval apDelegate Maybe Bool apApprove Mayb
  • 在 IE 请求中设置 AJAX 内容类型标头

    从 Internet Explorer 发送跨域 jquery ajax http 请求时 是否可以将 http 内容类型请求标头设置为 application json 我们正在尝试使用 REST WCF 服务 该服务在格式化响应时解释请
  • 是否可以将 MPMoviePlayerController 静音?

    在我的 iPhone 应用程序中 我想要静音和取消静音 MPMoviePlayerController 我进行了很多搜索 但无法成功 是否可以在 MPMoviePlayer 控制器中将音频静音 请帮帮我 提前致谢 MPMusicPlayer
  • 如何使用 TYPO3 extbase Fluid 正确输出 DateTime

    我在数据库中存储了两个 dateTime 对象 2014 11 03 09 00 00 2014 10 21 13 45 00 当我尝试使用 ViewHelper format date 输出它们时
  • 无服务器 - 如何将多个文件添加到 iamRoleStatements?

    In my serverless yml文件 我希望能够添加iamRoleStatements来自两个不同的文件 这不能改变 所以我尝试这样做 provider iamRoleStatements file environments yml
  • 在 Django 中注释 SUM 聚合函数导致“None”值

    正在做我的第一个真正的 Django 项目 需要指导 背景 我的项目是一个 reddit 克隆 用户提交链接 文本 访客投赞成票或反对票 有一个社交排名算法 作为后台脚本每约 2 分钟运行一次 根据净投票和内容的新鲜度对所有提交的内容重新排
  • 在列表上循环并删除[重复]

    这个问题在这里已经有答案了 for String fruit list if banane equals fruit list remove fruit System out println fruit 这里是一个带有删除指令的循环 在执行
  • FullCalendar 和 django

    我想在我的 django 项目中使用 fullcalendar jquery 插件 我有一个入门型号 class Entry models Model date models DatetimeField 它只有一个日期属性 我知道 full
  • 在另一台计算机上运行我的 Asp.Net Web 应用程序

    我如何在另一台计算机上运行我的应用程序 我的团队成员想要在他的计算机上查看网页 他不想安装 Visual Studio 只是想在浏览器中查看网页 我使用的是 Macbook 将其发布到 Web 服务器 或者让他在自己的计算机上安装 IIS
  • Apple MDM 推送错误,但仅限于某些 iOS 设备

    我们在某些 iPhone 设备上使用 MDMpush 时遇到错误 7 月 30 日 17 52 46 Mirnas iPhone apsd 49 发生流错误 错误 Domain NSPOSIXErrorDomain Code 54 操作无法
  • 检查 PHP 中的字符串是否序列化

    我正在为我的应用程序构建 Redis DB 缓存层 并且已经到了要处理数组的地步 我想知道是否有任何好的 高性能 方法来控制 PHP 中的字符串是否被序列化 多谢 array unserialize string if array fals
  • 如何解决因APK文件无效而安装失败的问题?

    我正在尝试构建 Dolphin Player 但我收到了错误 2012 09 21 09 46 23 DolphinPlayer Installation failed due to invalid APK file 2012 09 21
  • std::string 在 std::cin 的 4095 个字符后被截断

    我的程序需要从 stdin 读取最多 50k 个字符长的字符串 代码如下 include
  • 使用 API 17 渲染时 Android 按钮文本不居中

    在布局的图形视图中 当我从下图所示的按钮中选择 API 15 或更低版本时 圆圈按钮中的文本看起来不错 当我选择 API 17 时 即使 xml 代码相同 文本也会被替换 更改按钮填充没有帮助 这只是 Eclipse 的问题还是 Andro
  • 在 OpenGL 中快速绘制多个相同的对象

    所以我正在开发一款游戏 我需要绘制很多相同的对象 相同的形状 相同的大小 相同的颜色 只是位置不同 现在我的设置是这样的 我有一些课Renderer想要在屏幕上绘制的对象可以调用static void addVertex float x f
  • Spring框架中子文档数组字段中的过滤数组

    我正在尝试从 Spring 框架项目中的 MongoDB 数组中获取元素 我已经找到了MongoDB shell的解决方案 但我不知道如何通过Spring data core aggregation实现它 Spring不支持聚合运算符之一
  • Dlib面部标志起始指数

    我正在使用 dlib 来获取面部标志点 我的问题是关于 索引 68 个地标的参考图是从 1 开始的 是dlib代码Dlib 面部标志 https github com davisking dlib blob master examples
  • Python 多重处理和组合 DF

    我正在将一个大数据源读入 pandas 并将其分成 3 个块 我想使用多重处理 以便我可以同时完成每个块的分析功能 每个函数之后的输出是一个数据帧 然后我需要组合这三个小数据框 This part creates an empty data