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实现简单的并行计算相关推荐

  1. Python之简单的网页爬虫开发

    Python之简单的网页爬虫开发 文章目录 Python之简单的网页爬虫开发 下面简单介绍一下request: 简单介绍一下什么是第三方库: 结合requests与正则表达式 多线程爬虫 多进程库(m ...

  2. python怎么实现并行计算_用Python实现多核心并行计算

    平常写的程序,无论是单线程还是多线程,大多只有一个进程,而且只能在一个核心里工作.所以很多应用程序即使正在满载运行,在任务管理器中CPU使用量还是只有50%(双核CPU)或25%(四核CPU) 如果能 ...

  3. python实现简单的情感分析

    python实现简单的情感分析 1 数据导入及预处理 1.1 数据导入 # 数据导入 import pandas as pd data = pd.read_csv('../data/京东评论数据.cs ...

  4. 很多都是python很简单吗,但是要如何才能入门python并精通呢?

    1,python怎么学 一般来说,Python几个月应该是可以入门了.如果你几个月还没有入门,一定是方法不对,要么就是偷懒了.我在公众号里面有一篇文章详细写过 '初学者上来不要学爬虫',爬虫虽然非常有 ...

  5. 教你如何运用python实现简单文件读写函数

    这篇文章主要为大家详细介绍了python实现简单文件读写函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 python作为脚本性语言,加上它的简便易用性.会经常当作脚 ...

  6. python matplotlib 简单用法

    python matplotlib 简单用法 具体内容请参考官网 代码 import matplotlib.pyplot as plt import numpy as np # 支持中文 plt.rc ...

  7. 用Python实现简单的人脸识别,10分钟(附源码)

    前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...

  8. python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...

    每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...

  9. python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...

    原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...

最新文章

  1. TreeSet集合(自然排序和比较器排序)
  2. java线程能做什么_java中的多线程能做什么 ?基本作用能说下吗?
  3. 且看微软的.Net和Sun公司的J2EE如何对垒
  4. 计算机知识必备,小结||计算机基础知识点十(必备)
  5. .netcore2.0 发布CentOS7
  6. spring条件注解有哪些_Spring4有条件
  7. 2021年中国在线旅游行业分析报告
  8. jquery 与 prototype 冲突 Using jQuery with Other Libraries
  9. 用位运算实现有符号16bit数据clamp
  10. java静态注解处理器_java – 使用mapstruct中的builder(使用immutables注释处理器)将对象映射到不可变对象...
  11. Spring(四):面向切面编程AOP
  12. python入门之运算符的使用第一关_python基础教程之python 学习第四天|python基础教程|python入门|python教程...
  13. python 手机号码识别_python3库可以识别电话号码、姓名、电子邮件和地址
  14. mybatis 逆向工程 思维导图
  15. Overloaded operators
  16. python 常用股票走势图绘制
  17. Unity ML-Agents 之 平衡球案例的实现整理(内含实现步骤)
  18. 岁月的感知,生命的守望
  19. for linux pdf转mobi_pdftotext —— Linux/Unix中将PDF文件转化为Text文本格式的利器
  20. php 歌词同步,HTML5实践之歌词同步播放器的示例代码分享

热门文章

  1. 拷贝构造函数和移动构造函数的区别
  2. Rails开发的简单实例
  3. 图解最大熵原理(The Maximum Entropy Principle)
  4. [EPLAN]中的“安全参考”
  5. position 属性的常用的5种取值
  6. 小程序兼容iphoneX(齐刘海)代码,mpvue的写法
  7. 在微信小程序中,swiper组件(轮播图4)的常用属性
  8. 怎么看服务器虚拟内存大小,怎么看服务器虚拟内存大小
  9. 如何用 SQL 提取字符串中的字母
  10. Python 读取 PDF 信息插入 Word 文档