一. 多进程
Python实现多进程的方式主要有两种,一种方法是使用os模块中的fork(方法,另一种
方法是使用multiprocessing模块。这两种方法的区别在于前者仅适用于Unix/Linux操作系统,
对Windows不支持,后者则是跨平台的实现方式。由于现在很多爬虫程序都是运行在
Unix/Linux操作系统上,所以本节对两种方式都进行讲解。
1.使用multiprocessing模块创建多进程
import os
from multiprocessing import Process
def run_proc(name):
print('Child process %s (%s) Running...'%(name,os.getpid()))
if __name__ == '__main__':
print('Parent process %s.' % os.getpid())
for i in range(5):
p = Process(target=run_proc,args=(str(i),))
print('Process will start.')
p.start()
p.join()
print('Process end.')
import os,time,random
from multiprocessing import Pool
def run_proc(name):
print('Task %s (pid=%s) Running...'%(name,os.getpid()))
time.sleep(random.random()*3)
print('Task %s end.' % name)
if __name__ == '__main__':
print('Current process %s.' % os.getpid())
p = Pool(processes=30)
for i in range(100):
p.apply_async(run_proc,args=(i,))
print('Waiting for all subporcesses done....')
p.close()
p.join()
print('All subporcesses done.')
二. 多线程
三. 协程
四. 分布式进程