对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画ROC曲线和AUC值计算
Sep 19 Python
快速查询Python文档方法分享
Dec 27 Python
简单实现Python爬取网络图片
Apr 01 Python
将python代码和注释分离的方法
Apr 21 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
python IDLE添加行号显示教程
Apr 25 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
彻底搞懂python 迭代器和生成器
Sep 07 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
PHP安装问题
2006/10/09 PHP
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
PHP伪静态写法附代码
2008/06/20 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
php session安全问题分析
2011/06/24 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
html下载本地
2006/06/19 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
再谈JavaScript线程
2015/07/10 Javascript
vuejs指令详解
2017/02/07 Javascript
js中new一个对象的过程
2017/02/20 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
python3抓取中文网页的方法
2015/07/28 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
python利用opencv实现颜色检测
2021/02/23 Python
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
给海归自荐信的建议
2013/12/13 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
2016新年致辞
2015/08/01 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python