Python Multiprocessing 多进程,使用多核CPU计算 并使用tqdm显示进度条
1.背景
在python运行一些,计算复杂度比较高的函数时,服务器端单核CPU的情况比较耗时,因此需要多CPU使用多进程加快速度
2.函数要求
笔者使用的是:pathos.multiprocessing 库,进度条显示用tqdm库,安装方法:
pip install pathos
安装完成后
from pathos.multiprocessing import ProcessingPool as Pool
from tqdm import tqdm
这边使用pathos的原因是因为,multiprocessing 库中的Pool 函数只支持单参数输入,例如 f(x) = x**2,而不能处理 f (x,y) = x+y 这类的函数
更不用说一些需要参数的函数 例如:F(x , alpha=0.5, gamma = 0.1) 这样。
3.代码
定义一个 函数 F [ X ] ,其中,输入X是可以在第一个维度上迭代的array, 大小:[ num_X, len ] , 在第一维度 num_X 上进行迭代。
def F(X,lamda=10,weight=0.05):
res={}
res.update(F_1(X,lamda=lamda,weight=weight))
res.update(F_2(X,lamda=lamda,weight=weight))
return res
x 是 F 的输出,是一个dict (字典格式)
这里的两个函数超参数 lamda 和 weight 虽然每次调用的时候值是一样的,但是还是需要放一个数组每次用于迭代。
zip_lamda = [lamda for i in range(len(X)) ]
zip_weight = [weight for i in range(len(X)) ] with tqdm(total=len(cold_sequences)) as t:
for i, x in enumerate(pool.imap(F,X,zip_lamda,zip_weight)):
X[i,:] = [x[key] for key in x.keys()]
Y[i,] = 0
t.update() pool.close()
pool.join()
4.结果
mutiprocess 加速前

mutiprocess 加速后

Python Multiprocessing 多进程,使用多核CPU计算 并使用tqdm显示进度条的更多相关文章
- python多线程不能利用多核cpu,但有时候多线程确实比单线程快。
python 为什么不能利用多核 CPU GIL 其实是因为在 python中有一个 GIL( Global Interpreter Lock),中文为:全局解释器锁. 1.最开始时候设计GIL是 ...
- 利用Python计算π的值,并显示进度条
利用Python计算π的值,并显示进度条 第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...
- go/node/python 多进程与多核cpu
node node单线程,没有并发,但是可以利用cluster进行多cpu的利用.cluster是基于child_process的封装,帮你做了创建子进程,负载均衡,IPC的封装. const clu ...
- python multiprocessing多进程应用
multiprocessing包是Python中的多进程管理包,可以利用multiprocessing.Process对象来创建进程,Process对象拥有is_alive().join([timeo ...
- python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)
先来回顾一下昨天的内容 黏包现象粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全相 ...
- Python:如何显示进度条
首先,推荐一个组件:progressive 效果如下: 进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过std ...
- python显示进度条
当一个python任务是需要逐个处理相同的事物时(里面有循环操作,例如对一系列的文件进行处理),这时可以将处理的进度条加进来,下面是一个例子: import time import sys def v ...
- python Multiprocessing 多进程应用
在运维工作中,经常要处理大量数据,或者要跑一些时间比较长的任务,可能都需要用到多进程,不管是管理端下发任务,还是客户端执行任务,如果服务器配置还可以,跑多进程还是挺能解决问题的 Multiproces ...
- python multiprocessing多进程模块
原文:https://blog.csdn.net/CityzenOldwang/article/details/78584175 多进程 Multiprocessing 模块 multiprocess ...
随机推荐
- js判断图片加载完成
<!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...
- MSP430FR6972驱动模块模组调试
1. 说是会进入晶振的中断 #pragma vector=UNMI_VECTOR 2. 打了断点没进入,猜测是串口被世龙修改后,串口波特率不对,重新改回原来的,AT+NATSPEED?一直发送这个命令 ...
- robot:接口入参为图片时如何发送请求
https://www.cnblogs.com/changyou615/p/8776507.html 接口是上传图片,通过F12抓包获得如下信息 由于使用的是RequestsLibrary,所以先看一 ...
- nodejs中利用expresss脚手架和bootstrap,数据库mongodb搭建的留言板案例
## 1. 先打开编辑器,创建一个项目 ## 2. 再打开cmd命令提示符下载express脚手架 express 项目名 --view=ejs 或express -e 项目名 ## ...
- linux中信号的API详解实例
/************************************************************************* > File Name: signal.c ...
- torch.Tensor和numpy.ndarray
1. torch.Tensor和numpy.ndarray相互转换 import torch import numpy as np # <class 'numpy.ndarray'> np ...
- Redis的安装(windows)
一.安装redis windows版本的下载在https://github.com/MicrosoftArchive/redis/tags msi是安装版,zip的解压就能用.建议下msi的. 下载挺 ...
- 【坑】SpringMvc 处理JSON 乱码
文章目录 前言 方法 前言 在使用 springMvc 的时候,如果向前台返回 JSON 数据,JSON 中的中文会乱码: 即使你在配置了全局的信息编码拦截器,也无济于事: 原因大抵是,JSON 的内 ...
- STM32之spi管理模式
1)sip管理模式分为:硬件管理和软件管理:主要由NSS .SSI.SSM决定: NSS是芯片上一个实实在在的引脚,SSI和SSM是SPI_CR1控制器里的的位. 值得注意的是:NSS分外部引脚和内部 ...
- Python socket编程 (2)--实现文件验证登入
可以实现从客户端输入账号和密码然后发送到服务器进行验证,实现用户登入校正操作. 服务器: import socket import json server = socket.socket() serv ...