python multiprocessing_Python的multiprocessing模块详解
通过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模块详解相关推荐
- Python之ruamel.yaml模块详解(三)| ruamel.yaml与pyyaml的区别
Python之ruamel.yaml模块详解(三)| ruamel.yaml与pyyaml的区别 12 默认支持Yaml1.2 13 Py2和Py3重新整合 14 修复 15 测试 16 API 接前 ...
- python中 xlrd/xlwt模块详解
python中 xlrd/xlwt模块详解 1.什么是xlrd模块 python操作excel主要用到xlrd和xlwt两个库,即xlrd是读excel,xlwt是写excel库 一.安装xlrd模块 ...
- python之sys模块详解_(转)python之os,sys模块详解
python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...
- 刻意练习:Python基础 -- Task13. datetime模块详解
datetime模块 datetime 是 Python 中处理日期的标准模块,它提供了 4 种对日期和时间进行处理的类:datetime.date.time 和 timedelta. datetim ...
- python Logging日志记录模块详解
写在篇前 logging是Python的一个标准库,其中定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统.Python logging 的配置由四个部分组成:Logger.Handl ...
- Python 正则表达式使用--Re 模块详解
目录 1. 常用正则表达式符号和特殊字符 ?2.? Re 模块:核心函数和方法 2.1 re.compile() 编译函数 2.1.1?re.compile() 语法格式 2.1.2?re.compi ...
- Python 标准库 functools 模块详解
functools 官方文档:https://docs.python.org/zh-cn/3/library/functools.html Python 标准模块 --- functools:http ...
- dump文件_一种比Xml更敏捷的配置方式,Python Yaml 配置文件解析模块详解
为什么选择Yaml Yaml的可读性好.扩展性好. Yaml和脚本语言的交互性好. Yaml使用实现语言的数据类型. Yaml有一个一致的信息模型. Yaml易于实现. Yaml试图用一种比Xml更敏 ...
- Python(StringIO)模块详解
#coding=utf-8 ''' Created on 2017年3月5日@author: zxt ''' from io import StringIO# StringIO还有一个对应的c语言版的 ...
最新文章
- 从hadoop框架与MapReduce模式中谈海量数据处理
- 报错整理:ImportError: cannot import name ‘mean_absolute_percentage_error‘ from ‘sklearn.metrics‘
- jdbc_servlet基础增删改分页2(userinfo表的)
- matlab绘制sign函数,MATLAB的Symbolic Math Toolbox详解
- Fiori Elements - when is project webapp folder annotation.xml loaded
- 优秀程序员的 18 大法则【转载】
- ETL PostgreSQL in Oracle ODI 12c
- redis等缓存和mysql的数据同步问题解决思路
- java实现文件夹的复制(包括子文件夹以及子文件)
- 程序员应该每年更新自己的简历
- 黑鲨官网装机大师工具如何重装win10系统,win10系统重装
- 如何把小程序游戏运行到自有app中?
- 安卓开发— —仿微信界面(一)
- 闲谈IPv6-IPv6地址聚类分配原则于源地址选择的关系
- linux系统重启后找不到硬盘,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...
- Linux shell编程100例
- springSecurity之PasswordEncoder
- Linux开机启动、bashrc、定时任务
- 蓝桥杯:约数个数(C++)
- Lesson09_类和对象