Python多进程抓取全国邮政编码和长途区号

由于Python设计的限制(就是咱们常用的CPython)最多只能用满1个CPU核心。Python提供了非常好用的多进程包multiprocessing,你只需要定义一个函数,Python会替你完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。使用进程池可以让你跑满多核CPU,而且使用方法非常简单。

Show You The Code:

import multiprocessing
import time
def func(msg):
    for i in xrange(3):
        print msg
        time.sleep(1)
    return "done " + msg
if __name__ == "__main__":
    pool = multiprocessing.Pool(processes=4)
    result = []
    for i in xrange(10):
        msg = "hello %d" %(i)
        result.append(pool.apply_async(func, (msg, )))
    pool.close()
    pool.join()
    for res in result:
        print res.get()
    print "Sub-process(es) done."

processes=4是最多并发进程数量,使用Pool,还需要关注每个进程的执行结果。下面以多进程抓取全国邮政编码和长途区号为例。目标站点:http://www.ip138.com

使用以下语句导入多线程模块: from multiprocessing.dummy import Pool as ThreadPool

multiprocessing包是Python中的多进程管理包,这个模块表示像线程一样管理进程,这个是multiprocessing的核心,它与threading很相似,对多核CPU的利用率会比threading好的多。Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,直到池中有进程结束,才会创建新的进程来执行这些请求。

Pool类中的map方法,与内置的map函数用法行为基本一致,它会使进程阻塞直到返回结果。虽然第二个参数是一个迭代器,但在实际使用中,必须在整个队列都就绪后,程序才会运行子进程。map函数用法如下: map(func, iterable[, chunksize=None])

获取文本内容:

对邮政编码进行解析:

获取全国邮编结果如下:

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2016-10-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员宝库

使用 Node.js 开发简单的脚手架工具

像我们熟悉的 vue-cli,react-native-cli 等脚手架,只需要输入简单的命令 vue init webpack project,即可快速帮我们...

17620
来自专栏一个爱吃西瓜的程序员

requests库的基本用法

Requests 是使用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库。 它比urllib库更加方便,可以节约...

11310
来自专栏Java技术栈

dubbo服务调试管理实用命令

公司如果分项目组开发的,各个项目组调用各项目组的接口,有时候需要在联调环境调试对方的接口,可以直接telnet到dubbo的服务通过命令查看已经布的接口和方法,...

39670
来自专栏GreenLeaves

五、CLR加载程序集代码时,JIT编译器对性能的产生的影响

1、CLR首次加载代码造成的性能损失      四、CLR执行程序集中代码介绍了CLR在首次执行一个类的时,会初始化一个内部结构,然后当目标方法被首次调用时,...

31270
来自专栏Python小白进阶之旅

做一个简单的IP代理池

在文件中导入或者继承ip_proxies.py中的AgentIpPool模块,有以下几个方法:

20720
来自专栏JarvanMo的IT专栏

Node.js文件路径的坑

没错,我想读取system-config.json中的配置。刚开始,无论如何也读不到,连个错误信息也没有。调试了一番,终于出了一个错误信息: no such ...

21140
来自专栏从零开始学自动化测试

pytest文档21-pytest-html报告优化

pytest-html报告中当用到参数化时候,获取用例的nodeid里面有中文时候,会显示[\u6350\u52a9\u6211\u4eec]这种编码(再次声明...

89750
来自专栏令仔很忙

考试系统--底层框架发布时遇到的问题解决方案(Window7 IIS6.0)(三)

考试系统--底层框架发布时遇到的问题解决方案(Window7 IIS6.0)(二)

13210
来自专栏Grace development

NGINX宏观手记

任何一个工具都有它的灵魂所在,作为一个PHP程序员,我们可能仅仅使用了它的一小部分,这篇文章让你更加了解Nginx,本章大多都是总结、翻译、整理 ,希望你可以知...

8320
来自专栏喵了个咪的博客空间

phalcon-入门篇2(HelloWord与PhalconTools)

#phalcon-入门篇2(HelloWord与PhalconTools)# ? 本教程基于phalcon2.0.9版本 ##前言## 先在这里感谢各位phal...

37880

扫码关注云+社区

领取腾讯云代金券