Python下的多进程实现——利用multiprocessing库实现并发爬虫
2015-03-16 01:35
681 查看
Python下的多进程实现——利用multiprocessing库实现并发爬虫
主要使用到的函数如下:multiprocessing 库下的 Process
——实现多进程的主要函数
如果希望进程间共享数据,则使用Manager
——manager.dict( a ) 共享一个类型为字典的数据
——manager.list( a ) 共享一个类型为列表的数据
Value、Array,实现值共享、数组共享
——n = Value(‘i’, 7)
——x = Value(c_double, 1.0/3.0, lock=False)
if _name_ == ‘_main_‘:
——实现多进程的重要语句!类似于linux下的fork() == 0
和fork()实现多进程的不同之处:
linux下fork会复制前面的从程序开始的栈帧,一直到fork之前的全部内存区域 ,包括变量、函数表等等而python下略有不同的是,python并非复制,而是会执行一次前面的所有语句!
因此!利用
if __name__ == '__main__':语句是很重要的!
简单的附上一小段python代码
本文提到的一些用法在python的官方文档都可以找到,而且更加详细。链接:https://docs.python.org/2/library/multiprocessing.html#process-and-exceptions 敬请查阅!不再重复搬运if __name__ == '__main__': for i in tailset: if os.path.exists(savepath+i): print i,'[skip]' continue else: p = Process(target = download, args = (i,website,bookname,savepath,bookname)) allprocess.append(p) #print allprocess forkset = [] count = 0 for i in allprocess: i.start() forkset.append(i) count+=1 if count == 16:#more than 16 will be dangerous for proc in forkset: proc.join() count = 0 forkset = [] sleep(1)
说明
主要功能是实现一个16进程并发的爬网页爬虫。其中简简单单的实现了一个伪进程池。每16个进程为1组,添加sleep函数以避免高频访问
更多内容有待补充
相关文章推荐
- 简单介绍Python中利用生成器实现的并发编程
- 简单介绍Python中利用生成器实现的并发编程
- 11.python并发入门(part10 多进程之间实现通信,以及进程之间的数据共享)
- 利用python爬虫实现简单翻译软件
- 利用python实现简单的爬虫
- python利用beautifulSoup实现爬虫
- Python爬虫基础——利用cookie实现模拟登陆
- Python实现的异步代理爬虫及代理池2--正确实现并发
- 利用python实现生产者消费者的并发模型
- 利用python实现网络爬虫
- 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
- Python多线程、异步+多进程爬虫实现代码
- PYTHON多进程并发WEB服务器(利用LINUX的FORK)
- Python多线程、异步+多进程爬虫实现代码
- 利用python实现简单的爬虫,爬百度文库相关词条信息
- python之win32下,枚举进程,线程和线程对应的窗口的利用ctypes实现
- 利用python实现新浪微博爬虫 .
- python实现进程的并发
- python利用urllib实现爬取京东网站商品图片的爬虫实例
- 利用Python爬虫实现百度网盘自动化添加资源