1. 程式人生 > >[迎風奔雨]進程+攜程

[迎風奔雨]進程+攜程

ces 頁面 urn Coding read pen style 一個 pri

#-*- coding=utf-8 -*-  
import requests  
from multiprocessing import Process  
import gevent  
from gevent import monkey; monkey.patch_all()  
  
import sys  
reload(sys)  
sys.setdefaultencoding(utf8)  
def fetch(url):  
    try:  
        s = requests.Session()  
        r = s.get(url,timeout=1)#
在這裏抓取頁面 except Exception,e: print e return ‘‘ def process_start(url_list): tasks = [] for url in url_list: tasks.append(gevent.spawn(fetch,url)) gevent.joinall(tasks)#使用協程來執行 def task_start(filepath,flag = 100000):#每10W條url啟動一個進程 with open(filepath,
r) as reader:#從給定的文件中讀取url url = reader.readline().strip() url_list = []#這個list用於存放協程任務 i = 0 #計數器,記錄添加了多少個url到協程隊列 while url!=‘‘: i += 1 url_list.append(url)#每次讀取出url,將url添加到隊列 if i == flag:#一定數量的url就啟動一個進程並執行 p = Process(target=process_start,args=(url_list,)) p.start() url_list
= [] #重置url隊列 i = 0 #重置計數器 url = reader.readline().strip() if url_list not []:#若退出循環後任務隊列裏還有url剩余 p = Process(target=process_start,args=(url_list,))#把剩余的url全都放到最後這個進程來執行 p.start() if __name__ == __main__: task_start(./testData.txt)#讀取指定文件

[迎風奔雨]進程+攜程