首页 > 系统相关 >Python多进程实例

Python多进程实例

时间:2023-08-29 15:46:34浏览次数:42  
标签:get Python month df 实例 result func 进程

python多进程实例

废话不多说,直接上代码。

# -*- coding: utf-8 -*-
from multiprocessing import Pool
from multiprocessing import Process
import multiprocessing

import numpy as np
import pandas as pd


# 通用dataframe切片后多进程异步执行方法
def parallelize_dataframe(df, func):
    CPUs = multiprocessing.cpu_count()
    num_partitions = CPUs
    num_cores = CPUs

    df_split = np.array_split(df, num_partitions)
    pool = Pool(num_cores)
    result_list = []
    for df_temp in df_split:
        result_list.append(pool.apply_async(func=func, args=(df_temp, )))
    pool.close()
    pool.join()
    df = pd.concat([i.get() for i in result_list])
    return df


def parall_func(df):
    df['缺岗时长'] = df.apply(get_absence_duration, axis=1)
    return df


def analysis(current_month):
    df_shift = get_df_shift(current_month)  # 排班数据
    # 多线程处理
    df_shift = parallelize_dataframe(df_shift, parall_func)


if __name__ == '__main__':
    # 异步获取打卡数据
    # 创建进程池
    p = Pool()
    result = {}
    for month in month_list:
        result[month] = p.apply_async(func=get_df_card, args=(month, ))
    # 关闭进程池
    p.close()
    # 主进程阻塞,等待子进程的退出
    p.join()
    # 更新df_card_dict
    for k, v in result.items():
        df_card_dict[k] = v.get()
    # 更新df_base
    update_df_base_by_card()

    # 执行数据分析主逻辑
    # 注意:方法体中使用多进程,主程序不能用多进程,否则程序不执行
    for month in month_list:
        analysis(month)

标签:get,Python,month,df,实例,result,func,进程
From: https://www.cnblogs.com/steven0325/p/17664968.html

相关文章

  • Prometheus监控实战系列七:任务与实例
    一. 功能概述 任务与实例,是Prometheus监控中经常会提到的词汇。在其术语中,每一个提供样本数据的端点称为一个实例(instance),它可以是各种exporter,如node-exporter、mysql-exporter,也可以是你自己开发的一个服务。只要提供符合prometheus要求的数据格式,并允许通过HTTP请求获取......
  • python字典中的值为列表
    python字典中的值为列表构造字典,字典中的值为列表。实例:vales=[13,12,11,3,4,5,20,30,31]ex=[0,0,0,1,1,2,2,2]#是对vales的分类结果我们需要将分类结果对应的值,放在一起,由此将使用字典,最为合适,而key就是分类标签,而value则为对应的数据。ex_dic={}for......
  • day①-python基础
    Python介绍发展史Python2or3?安装HelloWorld程序变量用户输入模块初识.pyc是个什么鬼?数据类型初识数据运算表达式if...else语句表达式for循环breakandcontinue 表达式while循环作业需求 一、Python介绍python的创始人为吉多·范罗苏姆(GuidovanR......
  • 进程调度算法
    1、批处理系统中的调度(1)先来先服务:⾮抢占式的调度算法,按照请求的顺序进⾏调度。有利于长作业,但不利于短作业,因为短作业必须⼀直等待前⾯的长作业执⾏完毕才能执⾏,⽽长作业又需要执⾏很长时间,造成了短作业等待时间过长。(2)最短作业优先:⾮抢占式的调度算法,按估......
  • 这是一个基于threading可停止线程的有限容量有限并行度的python任务管理器
    这是一个可停止线程的有限容量有限并行度的任务管理器基于:GitHub-AlitaIcon/StopableThreadJob:可停止线程任务管理器QuickStart基础调用与效果importtimeimportdatetimefromloguruimportloggerfromStopableThreadJob.job_managerimportJobManagerif__name......
  • 当某个excel工作簿的某个单元格的值发生变动时, 自动执行python某脚本, 如何实现?
    要实现当Excel工作簿中的某个单元格值发生变化时自动执行Python脚本,你可以考虑以下步骤:监视单元格变化:首先,你需要实现监视Excel工作簿中的特定单元格是否发生了变化。这可以通过使用VBA(VisualBasicforApplications)宏来实现。打开Excel工作簿,按下ALT+F11打开VBA编辑器,然后......
  • python 实现图片压缩
    1、背景由于前面推流通过代代版本更新,目前停留在图片每一帧根据键的不同存进django框架自带的内存空间中,但是因为存在同时观看27个,甚至更多的情况,所以降低性能就显得尤为重要,虽然现在前端观看9个仅用20%CPU性能,后端也不高,但是也是要降2、python压缩图片的选择一、Pillow库Py......
  • 【Python-每日技巧】格式化输出的区别
    在Python中,字符串可以使用单引号(')或双引号(")括起来。如果字符串本身包含引号字符,你可以在字符串中使用反斜杠(\)进行转义。对于字符串中的美元符号($),它是一个普通的字符,不需要进行特殊处理。你可以直接在字符串中使用美元符号,如下所示:my_string="Thisisastringwitha$symbol."......
  • 深入理解操作系统中进程与线程的区别及切换机制(下)
    前言上一篇文章中我们了解了进程的执行方式,包括早期单核处理器上的顺序执行以及引入多任务概念实现的伪并行。我们还探讨了进程的状态模型。进程可以处于就绪、运行、阻塞和结束等不同的状态。在本篇文章中,我将探讨研究进程的状态模型、控制结构和切换机制。希望通过这篇文章的......
  • python加载so库
    fromctypesimportCDLL,RTLD_GLOBALfrom..ankeimportcurrentOSclassLoadSo:def__init__(self,soPath,args):ifcurrentOS!='darwin':forarginargs:"""1、麒麟、UOS环境循环......