python实现简单的并行计算
python实现多任务的方式包括多线程和多进程,多线程一般可以理解为单个CPU核执行多个任务,而多进程是指多个CPU核执行多个任务,二者区别请转阅他贴;多进程可以使用multiprocessing和MPI来实现,本文主要叙述用二者实现简单的并行计算:
(1)multiprocessing一般在单机上容易使用,比如你的单机是2个CPU共12个核
可用如下程序
if __name__ == "__main__":
import multiprocessing as mp
num_cores = int(mp.cpu_count())
pool = mp.Pool(processes=num_cores)
print num_cores,pool
for i in range(num_cores):
pool.apply_async(function, (i, ))
pool.close()
pool.join()
print "Sub-process(es) done."
上述function可是任意子程序,(i,)是该子程序的参数,一般使用多进程的话,是因为该子程序很慢,因此希望同时多核计算
然而这一方式很难在超级计算机上实现(也许我水平不够),因为超级计算机一般需要使用shell申请一个作业卡,然后去执行执行程序,如果你申请到12个核,并执行上述python程序,就会执行12次(每个CPU核心执行一次),而每次执行都分为12个进程,此种情况可使用MPI
(2)MPI不仅可以实现多进程计算,还能让多核心之间进行数据传递,这里只介绍简单的多进程,数据传递请转阅他贴。比如和上述问题一样,我们利用作业卡申请12个核心,如下
#!/bin/bash
#SBATCH --comment=某软件名称(根据作业卡要求填写)
#SBATCH -J 某任务名称(根据作业卡要求填写)
#SBATCH -p normal
#SBATCH -n 12
#SBATCH --ntasks-per-node=12
#SBATCH -o ./log.out.%j
#SBATCH -e ./log.err.%j
#SBATCH -t 10 #执行时间10分钟
python test.py
当作业开始运行,test.py会执行12次,内容如下
if __name__ == "__main__":
#下列程序会在每个CPU核执行
from mpi4py import MPI
comm=MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
if rank == 0:
#第0个核心输出下列信息
print("Total Number of Ranks: %d, Present Rank: "%(size,rank))
for i in range(size):
#第i个CPU核执行下列操作
if rank==i:
function(j)
print("Sub-process(es) %d done."%rank)
python实现简单的并行计算相关推荐
- Python之简单的网页爬虫开发
Python之简单的网页爬虫开发 文章目录 Python之简单的网页爬虫开发 下面简单介绍一下request: 简单介绍一下什么是第三方库: 结合requests与正则表达式 多线程爬虫 多进程库(m ...
- python怎么实现并行计算_用Python实现多核心并行计算
平常写的程序,无论是单线程还是多线程,大多只有一个进程,而且只能在一个核心里工作.所以很多应用程序即使正在满载运行,在任务管理器中CPU使用量还是只有50%(双核CPU)或25%(四核CPU) 如果能 ...
- python实现简单的情感分析
python实现简单的情感分析 1 数据导入及预处理 1.1 数据导入 # 数据导入 import pandas as pd data = pd.read_csv('../data/京东评论数据.cs ...
- 很多都是python很简单吗,但是要如何才能入门python并精通呢?
1,python怎么学 一般来说,Python几个月应该是可以入门了.如果你几个月还没有入门,一定是方法不对,要么就是偷懒了.我在公众号里面有一篇文章详细写过 '初学者上来不要学爬虫',爬虫虽然非常有 ...
- 教你如何运用python实现简单文件读写函数
这篇文章主要为大家详细介绍了python实现简单文件读写函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 python作为脚本性语言,加上它的简便易用性.会经常当作脚 ...
- python matplotlib 简单用法
python matplotlib 简单用法 具体内容请参考官网 代码 import matplotlib.pyplot as plt import numpy as np # 支持中文 plt.rc ...
- 用Python实现简单的人脸识别,10分钟(附源码)
前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...
- python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...
- python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...
原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...
最新文章
- TreeSet集合(自然排序和比较器排序)
- java线程能做什么_java中的多线程能做什么 ?基本作用能说下吗?
- 且看微软的.Net和Sun公司的J2EE如何对垒
- 计算机知识必备,小结||计算机基础知识点十(必备)
- .netcore2.0 发布CentOS7
- spring条件注解有哪些_Spring4有条件
- 2021年中国在线旅游行业分析报告
- jquery 与 prototype 冲突 Using jQuery with Other Libraries
- 用位运算实现有符号16bit数据clamp
- java静态注解处理器_java – 使用mapstruct中的builder(使用immutables注释处理器)将对象映射到不可变对象...
- Spring(四):面向切面编程AOP
- python入门之运算符的使用第一关_python基础教程之python 学习第四天|python基础教程|python入门|python教程...
- python 手机号码识别_python3库可以识别电话号码、姓名、电子邮件和地址
- mybatis 逆向工程 思维导图
- Overloaded operators
- python 常用股票走势图绘制
- Unity ML-Agents 之 平衡球案例的实现整理(内含实现步骤)
- 岁月的感知,生命的守望
- for linux pdf转mobi_pdftotext —— Linux/Unix中将PDF文件转化为Text文本格式的利器
- php 歌词同步,HTML5实践之歌词同步播放器的示例代码分享