对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中针对函数处理的特殊方法
Mar 06 Python
使用Python判断IP地址合法性的方法实例
Mar 13 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
Python时间获取及转换知识汇总
Jan 11 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
python3.5 email实现发送邮件功能
May 22 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
python实现接口并发测试脚本
Jun 25 Python
10个示例带你掌握python中的元组
Nov 23 Python
用python发送微信消息
Dec 21 Python
Django显示可视化图表的实践
May 10 Python
PyQt5爬取12306车票信息程序的实现
May 14 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 函数中使用static的说明
2012/06/01 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
详解vue-cli3使用
2018/08/14 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
Python修改MP3文件的方法
2015/06/15 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
python实现折半查找和归并排序算法
2017/04/14 Python
Python Socket使用实例
2017/12/18 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
python在不同条件下的输入与输出
2020/02/13 Python
python绘制玫瑰的实现代码
2020/03/02 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
夜大毕业自我鉴定
2013/10/11 职场文书
大学生的网上创业计划书
2013/12/31 职场文书
公司活动策划方案
2014/01/13 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
校园环保建议书
2014/05/14 职场文书
建筑安全生产责任书
2014/07/22 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
Java的Object类的九种方法
2022/04/13 Java/Android