对Python中创建进程的两种方式以及进程池详解


Posted in Python onJanuary 14, 2019

在Python中创建进程有两种方式,第一种是:

from multiprocessing import Process
import time
 
def test():
 while True:
  print('---test---')
  time.sleep(1)
 
if __name__ == '__main__':
 p=Process(target=test)
 p.start()
 while True:
  print('---main---')
  time.sleep(1)

上面这段代码是在windows下跑的,通过Process类可以创建一个进程对象,然后p.start()即可开启进程,test函数是你想进程实现的功能。

第二种方式是:

from multiprocessing import Process
import time
 
class MyNewProcess(Process):
 def run(self):
  while True:
   print('---1---')
   time.sleep(1)
 
if __name__=='__mian__':
 p = MyNewProcess()
 # 调用p.start()方法,p会先去父类中寻找start(),然后在Process的start方法中调用run方法
 p.start()
 
 while True:
  print('---Main---')
  time.sleep(1)

这里是第二种创建进程的方式,通过子类继承Process类,子类中必须有run方法,里面实现进程功能,创建子类对象之后,调用对象的start方法。

下面来说一下进程池,就是实现已经创建好的进程

# 进程池
from multiprocessing import Pool
import os
import random
import time
 
def worker(num):
 for i in range(5):
  print('===pid=%d==num=%d='%(os.getpid(),num))
  time.sleep(1)
 
# 3表示进程池中最多有三个进程一起执行
pool=Pool(3)
 
for i in range(10):
 print('---%d---'%i)
 # 向进程中添加任务
 # 注意:如果添加的任务数量超过了进程池中进程的个数的话,那么就不会接着往进程池中添加,如果还没有执行的话,他会等待前面的进程结束,然后在往
 # 进程池中添加新进程
 pool.apply_async(worker,(i,))
 
pool.close() # 关闭进程池
pool.join() # 主进程在这里等待,只有子进程全部结束之后,在会开启主线程

大家可以看到在Pool方法就是创建了一个进程池,3表示创建进程数,通过pool.apply_async( )将子进程添加到进程池中,pool.close( )表示关闭进程池,一定要添加join函数,否则主进程直接崩了,看不到进程池中子进程的现象。

以上这篇对Python中创建进程的两种方式以及进程池详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python下尝试多线程编程
Apr 28 Python
Python制作钉钉加密/解密工具
Dec 07 Python
在cmd中运行.py文件: python的操作步骤
May 12 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
Python 使用指定的网卡发送HTTP请求的实例
Aug 21 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
python scatter函数用法实例详解
Feb 11 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
python re模块和正则表达式
Mar 24 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 Python
对Python多线程读写文件加锁的实例详解
Jan 14 #Python
Python多进程写入同一文件的方法
Jan 14 #Python
python 将大文件切分为多个小文件的实例
Jan 14 #Python
使用k8s部署Django项目的方法步骤
Jan 14 #Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 #Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 #Python
用Python实现大文本文件切割的方法
Jan 12 #Python
You might like
给海燕B411配件机起死回生配上件
2021/03/02 无线电
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
js数组的操作指南
2014/12/28 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
python中requests模块的使用方法
2015/04/08 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
应届专科生个人的自我评价
2014/01/05 职场文书
员工考核评语大全
2014/04/26 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
爱国主题班会教案
2015/08/14 职场文书
高中历史教学反思
2016/02/19 职场文书
2019销售早会主持词
2019/06/27 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
java如何实现socket连接方法封装
2021/09/25 Java/Android
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript