Skip to main content
 首页 » 编程设计

python之使用多线程优化 python 脚本

2025年05月04日18sxdcgaq8080

<分区>

大家好!自己写过小网页爬虫功能。但是我是多线程的新手,我无法优化它。我的代码是:

alreadySeenURLs = dict() #the dictionary of already seen crawlers 
candidates = set() #the set of URL candidates to crawl 
 
def initializeCandidates(url): 
 
    #gets page with urllib2 
    page = getPage(url) 
 
    #parses page with BeautifulSoup 
    parsedPage = getParsedPage(page) 
 
    #function which return all links from parsed page as set 
    initialURLsFromRoot = getLinksFromParsedPage(parsedPage) 
 
    return initialURLsFromRoot  
 
def updateCandidates(oldCandidates, newCandidates): 
    return oldCandidates.union(newCandidates) 
 
candidates = initializeCandidates(rootURL) 
 
for url in candidates: 
 
    print len(candidates) 
 
    #fingerprint of URL 
    fp = hashlib.sha1(url).hexdigest() 
 
    #checking whether url is in alreadySeenURLs 
    if fp in alreadySeenURLs: 
        continue 
 
    alreadySeenURLs[fp] = url 
 
    #do some processing 
    print url 
 
    page = getPage(url) 
    parsedPage = getParsedPage(page, fix=True) 
    newCandidates = getLinksFromParsedPage(parsedPage) 
 
    candidates = updateCandidates(candidates, newCandidates) 

正如你所看到的,这里它在特定时间从候选人那里获取一个 url。我想让这个脚本多线程化,这样它至少可以从候选人那里获取 N 个 url,然后完成这项工作。谁能指导我?给任何链接或建议?