对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 BeautifulSoup设置页面编码的方法
Apr 03 Python
pygame学习笔记(5):游戏精灵
Apr 15 Python
Python多进程同步简单实现代码
Apr 27 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
Python 从subprocess运行的子进程中实时获取输出的例子
Aug 14 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
浅谈pycharm使用及设置方法
Sep 09 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
python3.6连接mysql数据库及增删改查操作详解
Feb 10 Python
Django 5种类型Session使用方法解析
Apr 29 Python
python switch 实现多分支选择功能
Dec 21 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调用三种数据库的方法(3)
2006/10/09 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
javascript 函数式编程
2007/08/16 Javascript
JavaScript判断变量是对象还是数组的方法
2014/08/28 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
Augularjs-起步详解
2016/07/08 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
node通过express搭建自己的服务器
2017/09/30 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
Python类属性的延迟计算
2016/10/22 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
利用python绘制正态分布曲线
2021/01/04 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
C#笔试题
2015/07/14 面试题
预备党员思想汇报
2014/01/08 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
法学求职信
2014/06/22 职场文书
医院合作协议书
2014/08/19 职场文书
2014公司年终工作总结
2014/12/19 职场文书
颐和园英文导游词
2015/01/30 职场文书
中学生自我评价2015
2015/03/03 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers