'''
多进程
优点:可以利用多核,实现并行运算
缺点:1、开销太大; 2、通信困难
使用方式跟开多线程一样
''' 多进程
import multiprocessing
import time,os def foo(name):
print('ok')
print('name',name)
print('parent process:',os.getppid()) # os.getppid()获取父进程号
print('process id:',os.getpid()) # os.getpid()获取子进程号
time.sleep(2) if __name__ == '__main__': # 开子进程必须用这种方式 foo('main process') p = multiprocessing.Process(target=foo,args=('egon',))
p.start()
print('ending')

开多进程补充

def foo():
time.sleep(2)
print("ok")
#print(x) print("yuan") # 每开启一个进程,会将主进程加载一次,也就会打印一次 if __name__ == '__main__': # 进程从这里开始 p=Process(target=foo,) # 新的进程,打印一次‘yuan’
p.start() p1 = Process(target=foo, )
p1.start() x=123 # Linux系统,新进程会自带主进程变量,所以自进程也可以打印x值,Windows系统不会
p.join() print("ending")
'''
进程间通讯
队列,管道,manager共享
'''
进程queue
import multiprocessing

def foo(q):
q.put([11,'hello',True]) if __name__ == '__main__': q = multiprocessing.Queue() # 进程队列,主函数运行创建进程队列 p = multiprocessing.Process(target=foo,args=(q,))
p.start() print(q.get())

进程管道

from multiprocessing import Pipe,Process
def foo(a):
a.send('hello world')
print(a.recv()) if __name__ == '__main__':
a,b = Pipe()
p = Process(target=foo,args=(a,))
p.start() print(b.recv()) b.send('hi son')

manager数据共享

from multiprocessing import Process,Pipe,Manager

def foo(d,i):
d[i] = i**2 if __name__ == '__main__':
manager=Manager()
mdict = manager.dict({}) l = []
for i in range(5):
p = Process(target=foo,args=(mdict,i))
p.start()
l.append(p) for i in l:
i.join() print(mdict)

'''
进程池
Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;
但如果池中的进程数已经达到规定最大值,那么该请求就会等待,直到池中有进程结束,就重用进程池中的进程
'''
from multiprocessing import Pool
import time def foo(n):
print(n)
time.sleep(1) if __name__ == '__main__': pool_obj = Pool(5) for i in range(100):
pool_obj.apply_async(func=foo,args=(i,)) pool_obj.close()
pool_obj.join() print('ending')

python3 进程_multiprocessing模块的更多相关文章

  1. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  2. Python3之logging模块浅析

    Python3之logging模块浅析   目录 Python3之logging模块浅析 简单用法 日志与控制台同时输出 一个同时输出到屏幕.文件的完成例子 日志文件截取 日志重复打印问题解决 问题分 ...

  3. 第三十天- 进程 Process模块 空间隔离

    1.进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体: ...

  4. Python3之turtle模块的使用

    Python3之turtle模块的使用     直接扣代码就行: import turtle as t t.pensize(4) t.hideturtle() t.colormode(255) t.c ...

  5. 0510进程 multiprocess模块

    process模块是一个创建进程的模块,借助这个模块,就可以完成进程的创建. 创建模块 import os import time from multiprocessing import Proces ...

  6. Python3:Requests模块的异常值处理

    Python3:Requests模块的异常值处理 用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求. 但是在真正 ...

  7. Python3中正则模块re.compile、re.match及re.search函数用法详解

    Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...

  8. Python3安装Celery模块后执行Celery命令报错

    1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...

  9. Python3之configparser模块

    1. 简介 configparser用于配置文件解析,可以解析特定格式的配置文件,多数此类配置文件名格式为XXX.ini,例如mysql的配置文件.在python3.X中 模块名为configpars ...

随机推荐

  1. 给socks-proxy-agent增加认证

    由于需要使用socks代理,查看了nodejs的各种socks库,最终的结论是socks库是其中最完善的,而socks-proxy-agent是以其为基础的封装,可以直接和http模块对接. 不过在尝 ...

  2. 【廖雪峰老师python教程】——filter/sorted

    filter Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然 ...

  3. CAS单点登录(一):单点登录与CAS理论介绍

    一.什么是单点登录(SSO) 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录. 单点登录(Single Sign On),简称 ...

  4. 0.爬虫 urlib库讲解 urlopen()与Request()

    # 注意一下 是import urllib.request 还是 form urllib import request 0. urlopen() 语法:urllib.request.urlopen(u ...

  5. python基础训练营02

    任务二 时长:2天 1. 列表 a. 标志 b. 基本操作(创建,append( ),pop( ) ,del( ), 拷贝) c. 列表相关方法 2. 元组 a. 标志 b. 基本操作(创建及不可变性 ...

  6. Hexo 博客部署到 GitHub

    本文简单记录了一下把 Hexo 部署到 GitHub 上的过程,也是搭建静态博客最常用的一种方式. 前面写了关于如何把 Hexo 安装在树莓派上的教程,但树莓派毕竟是连着自己的家的路由器,万一哪天网断 ...

  7. winform 根据两点求出线上所有点及画出这条线

    找出所有点: 根据斜率按照一个方向递增,求出对应的另一个方向的整数值. Point pStart = new Point(0, 2); Point pEnd = new Point(8, 2); // ...

  8. 解决hadoop no dataNode to stop问题

    错误原因: datanode的clusterID 和 namenode的 clusterID 不匹配. 解决办法: 1. 打开 hadoop/tmp/dfs/namenode/name/dir 配置对 ...

  9. elasticsearch this is not a http port

    访问的是elastic search的tcp端口,需换成http端口. elastic search默认tcp端口9300,http端口9200 如果浏览器中访问http://localhost:92 ...

  10. 安装elasticsearch-1.7.1及中文IK和近义词配置

    安装elasticsearch及中文IK和近义词配置 https://www.cnblogs.com/yjf512/p/4789239.html 安装elasticsearch及中文IK和近义词配置 ...