通过multiprocessing模块的Process类创建一个进程的实力,并通过run()的方法来运行他from multiprocessing import Process

import os

def sub_hello(name):

print('Hello,%s! My process ID is %s' %(name,os.getpid()))

if __name__ == '__main__':

print('I\'m running in process %s' %os.getpid())

p = Process(target=sub_hello, args=('bobo',))

p.start()

p.join()

print('Process in end')

得到的运行结果如下:

I'm running in process 11284

Hello,bobo! My process ID is 13996

Process in end

2.通过multiprocessing模块创建进程池Pool,批量创建子进程from multiprocessing import Pool

import os,time,random

def multi_task(name):

print('task %s(ID %s) is running'%(name,os.getpid()))

start=time.time()

time.sleep(random.random()*3)

end=time.time()

print('Im running in %0.2f'%(end-start))

if __name__=='__main__':

print('Processing is running %s'%os.getpid())

p=Pool()

for i in range(5):

p.apply_async(multi_task,args=(i,))

p.close()

p.join()

代码运行结果如下:

Processing is running 6960

task 0(ID 12928) is running

task 1(ID 9328) is running

task 2(ID 12344) is running

task 3(ID 13412) is running

Im running in 0.57

task 4(ID 9328) is running

Im running in 1.33

Im running in 2.60

Im running in 2.59

Im running in 2.39

3,进程之间通信有两种方式,一种是Queue,一种是Pipefrom multiprocessing import Process,Queue

import os

def sub_process(queue):

queue.put(['bobo','is','a','God'])

print('My process ID is %s'%os.getpid())

if __name__=='__main__':

q=Queue()

p=Process(target=sub_process,args=(q,))

p.start()

p.join()

print('Myprocess ID is %s Mychildren trans me %s'%(os.getpid(),q.get()))

使用pip来传递进程之间的数据from multiprocessing import Pipe,Process

def pip_con(pip):

pip.send(['bobo','is','a','god'])

pip.close()

if __name__ == '__main__':

parent_con,child_con=Pipe()

p=Process(target=pip_con,args=(child_con,))

p.start()

p.join()

print(parent_con.recv())

进程锁,示例。两个进程同时读取一个文件的时候会发生混乱,import multiprocessing

import time

def worker_with(lock,file):

with lock:

f=open(file,'a')

f.write('Lock acquired via with')

f.close()

def woker_no_with(lock,file):

lock.acquire()

try:

f=open('file','a')

f.write('Lock acquired directly')

f.close()

finally:

lock.release()

if __name__ == '__main__':

l=multiprocessing.Lock()

w=multiprocessing.Process(target=worker_with,args=(l,'c:\\test1.txt'))

nw=multiprocessing.Process(target=woker_no_with,args=(l,'c:\\test1.txt'))

w.start()

nw.start()

w.join()

nw.join()

python multiprocessing_Python的multiprocessing模块详解相关推荐

  1. Python之ruamel.yaml模块详解(三)| ruamel.yaml与pyyaml的区别

    Python之ruamel.yaml模块详解(三)| ruamel.yaml与pyyaml的区别 12 默认支持Yaml1.2 13 Py2和Py3重新整合 14 修复 15 测试 16 API 接前 ...

  2. python中 xlrd/xlwt模块详解

    python中 xlrd/xlwt模块详解 1.什么是xlrd模块 python操作excel主要用到xlrd和xlwt两个库,即xlrd是读excel,xlwt是写excel库 一.安装xlrd模块 ...

  3. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

  4. 刻意练习:Python基础 -- Task13. datetime模块详解

    datetime模块 datetime 是 Python 中处理日期的标准模块,它提供了 4 种对日期和时间进行处理的类:datetime.date.time 和 timedelta. datetim ...

  5. python Logging日志记录模块详解

    写在篇前   logging是Python的一个标准库,其中定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统.Python logging 的配置由四个部分组成:Logger.Handl ...

  6. Python 正则表达式使用--Re 模块详解

    目录 1. 常用正则表达式符号和特殊字符 ?2.? Re 模块:核心函数和方法 2.1 re.compile() 编译函数 2.1.1?re.compile() 语法格式 2.1.2?re.compi ...

  7. Python 标准库 functools 模块详解

    functools 官方文档:https://docs.python.org/zh-cn/3/library/functools.html Python 标准模块 --- functools:http ...

  8. dump文件_一种比Xml更敏捷的配置方式,Python Yaml 配置文件解析模块详解

    为什么选择Yaml Yaml的可读性好.扩展性好. Yaml和脚本语言的交互性好. Yaml使用实现语言的数据类型. Yaml有一个一致的信息模型. Yaml易于实现. Yaml试图用一种比Xml更敏 ...

  9. Python(StringIO)模块详解

    #coding=utf-8 ''' Created on 2017年3月5日@author: zxt ''' from io import StringIO# StringIO还有一个对应的c语言版的 ...

最新文章

  1. 从hadoop框架与MapReduce模式中谈海量数据处理
  2. 报错整理:ImportError: cannot import name ‘mean_absolute_percentage_error‘ from ‘sklearn.metrics‘
  3. jdbc_servlet基础增删改分页2(userinfo表的)
  4. matlab绘制sign函数,MATLAB的Symbolic Math Toolbox详解
  5. Fiori Elements - when is project webapp folder annotation.xml loaded
  6. 优秀程序员的 18 大法则【转载】
  7. ETL PostgreSQL in Oracle ODI 12c
  8. redis等缓存和mysql的数据同步问题解决思路
  9. java实现文件夹的复制(包括子文件夹以及子文件)
  10. 程序员应该每年更新自己的简历
  11. 黑鲨官网装机大师工具如何重装win10系统,win10系统重装
  12. 如何把小程序游戏运行到自有app中?
  13. 安卓开发— —仿微信界面(一)
  14. 闲谈IPv6-IPv6地址聚类分配原则于源地址选择的关系
  15. linux系统重启后找不到硬盘,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...
  16. Linux shell编程100例
  17. springSecurity之PasswordEncoder
  18. Linux开机启动、bashrc、定时任务
  19. 蓝桥杯:约数个数(C++)
  20. Lesson09_类和对象

热门文章

  1. MFC如何调用Flash控件
  2. 干电池电量采集_干电池电量的检测方法,干电池的常用保存方法
  3. 手机通过QQ发送图片到电脑端,电脑接收不到且显示图裂
  4. VMD确定分解个数K(matlab)
  5. 为你解析--音视频会议系统
  6. 【项目展示】自己用C语言编写的象棋小程序
  7. Word Vector的综述
  8. 第六章_编写定制标签
  9. 下载Linux ISO镜像的方法 (带你快速了解)
  10. 使用Hadoop提取网络日志KPI指标