学习笔记--Python多进程
os.fork
该方法仅支持Linux/Unix
1 import os 2 3 print('Current Process %s start ...' % os.getpid()) 4 pid = os.fork() #复制主进程以生成一个子进程 5 if pid < 0: 6 print('error in fork ') 7 elif pid == 0: 8 print('I am child process %s and my parent process is %s' % (os.getpid(), os.getppid())) 9 else: 10 print('I %s created a child process %s' % (os.getppid(), os.getpid()))
multiprocessing
进程池 pool
1 from multiprocessing import Pool 2 import os, time, random 3 4 def run_task(name): 5 print('Task %s (pid = %s) is running...' % (name, os.getpid())) 6 time.sleep(random.random() * 3) 7 print('Task %s end.' % name) 8 9 if __name__ == '__main__': 10 print('Curret process %s.' % os.getpid()) 11 p = Pool(processes = 3) # 创建进程池 12 for i in range(5): 13 p.apply_async(run_task, args = (i, )) # 启动进程 14 print('Waiting for all subprocesses done...') 15 p.close() 16 p.join() 17 print('All subprocesses done.')
进程间通信
Queue
1 from multiprocessing import Queue, Process 2 import os, time, random 3 4 def proc_write(q, urls): 5 print('Process (%s) is writig...' % os.getpid()) 6 for url in urls: 7 q.put(url) # 往队列中添加 8 print('Put %s to queue...' % url) 9 time.sleep(random.random()) 10 11 def proc_read(q): 12 print('Process (%s) is writig...' % os.getpid()) 13 while True: 14 url = q.get(True) # 从队列中取出 15 print('Get %s from queue.' % url) 16 17 if __name__ == '__main__': 18 q = Queue() # 创建消息队列 19 # 创建进程 20 proc_writer1 = Process(target = proc_write, args = (q, ['url_1', 'url_2', 'url_3', 'url_4'])) 21 proc_writer2 = Process(target = proc_write, args = (q, ['url_5', 'url_6', 'url_7', 'url_8'])) 22 proc_reader = Process(target = proc_read, args = (q, )) 23 # 启动进程,往消息队列中添加 24 proc_writer1.start() 25 proc_writer2.start() 26 # 启动读queue进程 27 proc_reader.start() 28 # 等待proc_writer结束 29 proc_writer1.join() 30 proc_writer2.join() 31 # 由于proc_reader 进程里是死循环,这里强行终止 32 proc_reader.terminate()
Pipe
1 import multiprocessing, random, os, time 2 3 def proc_send(pipe, urls): 4 for url in urls: 5 print('Process %s send: %s ' % (os.getpid(), url)) 6 pipe.send(url) # 发送 url 7 time.sleep(random.random()) 8 9 def proc_recv(pipe): 10 while True: 11 print('Process %s rev: %s' % (os.getpid(), pipe.recv())) 12 time.sleep(random.random()) 13 14 if __name__ == '__main__': 15 pipe = multiprocessing.Pipe() 16 p1 = multiprocessing.Process(target = proc_send, args = (pipe[0], ['url_' + str(i) for i in range(10)])) 17 p2 = multiprocessing.Process(target = proc_recv, args = (pipe[1], )) 18 p1.start() 19 p2.start() 20 p1.join() 21 p2.terminate()
代码摘自 《Python爬虫开发与项目实战》-- 范伟辉
转载于:https://www.cnblogs.com/loayi/p/8991877.html
学习笔记--Python多进程相关推荐
- python语言的33个保留字的基本含义_Python学习笔记——Python的33个保留字及其意义,python,pythone33,含义...
Python学习笔记--Python的33个保留字及其意义,python,pythone33,含义 发表时间:2020-03-27 笔记走起 正文 序号 保留字 含义 1 and 用于表达式运算,逻辑 ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...
- 树莓派学习笔记——Python SQLite插入温度记录
0 前言 本文使用python向SQLite数据库中插入树莓派温度数据,SQLite数据库中包含一张只包含三个字段的记录表--参数名称,时间和温度值.本文重点解释Python操作SQlite的具体方法 ...
- 全志H616学习笔记------Python
要求:不用深究,用C语言的视角学习,会改就行 Python是一种动态解释型语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在java..NET开发平台上使用. 特点 ...
- 学习笔记:Python 面试100讲(基于Python3.x)05-python综合题
01-read.readline.readlines区别 一 如何打开和读取文本内容 二 使用open函数打开文件,并返回一个IO对象,该对象有3个用于读取文件的方法, 分别为read.readlin ...
- python编程语法-Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- [学习笔记]python
一些屁话 对于学习,我觉得要带有目的的去学,这样效率才会提高,我学一样技能肯定是要去完成一件事,不然我学习了干什么呢,学编程语言也是一样,我个人学习python的初衷是看到一些大神写的爬虫,当时就觉得 ...
- python程序运行键_python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
最新文章
- DataSet导出Excel,比以往的方法导出的Excel外观更加好看
- 哈哈,这个小游戏很有意思!
- 程序员——[小鸟语录]
- Oracle日期操作函数
- 设计模式-(8)外观(swift版)
- 如何突破大众点评接口风控?
- PIE工程师是做什么的
- 业务安全漏洞挖掘归纳总结
- maya阿诺德渲染失败_[转载]Arnold 渲染器for maya 安装不了的解决办法
- DVB-S/S2天线及信号相关知识
- 星空粒子登录页面 jsp
- 笔记本外接2K显示器问题记录(集显Intel HD Graphic 3000)
- PyPDF2读取PDF文件内容保存到本地TXT
- 解决Windows11打不开Windowsdefender(安全中心)
- 冰河公开了常逛的23大学习网站,赶快收藏
- ADAMoeacle预言机竞争优势|支持广域网节点喂价|节点挖ADAM
- 看不懂!苏宁控股“卖身”淘宝,“盲盒第一股”市值破千亿,超过苏宁易购
- Linux配置ntp时间同步服务器(全)No association ID's returned
- EndNote文献悬挂缩进的设置方法及设置参考文献序号后面空格长度
- 对于技术岗位来说,开发岗累还是算法岗累, 我们一起来聊聊
热门文章
- day18【前台】订单
- 第 6 章 工厂模式
- mysql 联表比对,MySQL联表查询详解/超详细mysql left join,right join,inner join用法分析比较...
- mysql event同步数据库_mysql 数据库Event定时任务使用详解(Navicat 及直接SQL语句创建)...
- 华为交换机重制_华为交换机重置命令
- php5框架,Thinkphp5.1框架
- gateway配置mysql_使用Gateway配置路由以及动态路由
- 你不可不知道的React生命周期
- python爬虫酷狗_python爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦
- python中run函数作用_Python run()函数和start()函数的比较和差别介绍