python3 进程_multiprocessing模块
'''
多进程
优点:可以利用多核,实现并行运算
缺点: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模块的更多相关文章
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
- Python3之logging模块浅析
Python3之logging模块浅析 目录 Python3之logging模块浅析 简单用法 日志与控制台同时输出 一个同时输出到屏幕.文件的完成例子 日志文件截取 日志重复打印问题解决 问题分 ...
- 第三十天- 进程 Process模块 空间隔离
1.进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体: ...
- Python3之turtle模块的使用
Python3之turtle模块的使用 直接扣代码就行: import turtle as t t.pensize(4) t.hideturtle() t.colormode(255) t.c ...
- 0510进程 multiprocess模块
process模块是一个创建进程的模块,借助这个模块,就可以完成进程的创建. 创建模块 import os import time from multiprocessing import Proces ...
- Python3:Requests模块的异常值处理
Python3:Requests模块的异常值处理 用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求. 但是在真正 ...
- Python3中正则模块re.compile、re.match及re.search函数用法详解
Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...
- Python3安装Celery模块后执行Celery命令报错
1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...
- Python3之configparser模块
1. 简介 configparser用于配置文件解析,可以解析特定格式的配置文件,多数此类配置文件名格式为XXX.ini,例如mysql的配置文件.在python3.X中 模块名为configpars ...
随机推荐
- python学习总结----异常处理
相关概念 - 错误:程序运行之前的语法错误,如:关键字.缩进不齐.括号不成对. - 异常:在程序运行过程中出现的问题,如:除数为0.对象属性不存在等. 异常处理 - 说明:异常处理可以理解为特殊的流程 ...
- python 基础篇 15 内置函数和匿名函数
------------------------>>>>>>>>>>>>>>>内置函数<<< ...
- Docker安装Zabbix全记录
零.Zabbix架构设计 一.docker安装mysql 查找Docker Hub上的mysql镜像: [root@10e131e69e15 ~]# docker search mysql INDEX ...
- cordova相关
官网 安装nodejs 常用命令: $ npm install -g cordova //安装cordova $ cordova create [project name] //创建工程 $ cord ...
- c# 对List<T> 某字段排序,取TOP条数据
//排序的对象里的字段数据准备 try { cmr.v4 = Double.Parse(cmr.v3) - Double.Parse(cmr.v2); } catch (Exception e) { ...
- JavaWeb笔记(十二)日志
日志 日志信息根据用途与记录内容的不同,分为调试日志.运行日志.异常日志等. Java常用记录日志 logger log4j log4j2 logback 其中除了logger使用的概率较小,因此主要 ...
- libevent显式调用事件处理
) { SearchAcceptListen2(p_ev_arg->listen_fd,,¬ify_event,base); event_base_loop(base, EVLOO ...
- jquery在页面加载完成后再append的元素事件无效问题
最近遇到一个问题,jquery在页面加载完成后再append的元素,append元素上有onclick事件,但是在append的元素上怎么点击都不会触发onclick事件.就如: <ul cla ...
- JS实现双击编辑可修改
需求描述:在一段文字处双击可以进行修改,也就是双击后创建输入框,输入内容,在输入框失去焦点后将输入的内容再以文字的形式显示出来,以下是html代码: 1 <fieldset> 2 < ...
- 【EasyNetQ】- 简介
EasyNetQ是一个简单易用的,稳定的的RabbitMQ .NET API . 如果您只想尽快启动并运行,请转到“ 快速开始”指南. EasyNetQ的目标是提供一个库,使得在.NET中使用Rabb ...