在python中,多线程并不能利用CPU的多核性能。为进一步提高爬虫性能,使用多进程是有必要的。多进程要比多线程要复杂一些,难点主要在进程间通讯的问题。系统将会分成服务器和客户端,服务器负责与各个进程进行通讯、存储数据以及分配任务。客户端负责从服务器接收任务,将采集的数据传送到服务器。
1.multiprocessing使用入门
python多进程模块multiprocessing,与多线程模块threading类似。
- 创建一个简单的进程
from multiprocessing import Process
def subprocess(name):
print name
def main():
p = Process(target=subprocess,args=('hello',))
p.start() #启动进程
p.join() #等待进程结束
if __main__=='__main__':
main()
- 进程之间数据交换
进程之间数据交换主要采用队列或者管道来实现,当然也可以采用共享内存来实现。