[Python] Applicazione multithreading

Valentino Volonghi aka Dialtone dialtone a divmod.com
Lun 19 Mar 2007 00:16:27 CET


On Sun, 18 Mar 2007 22:59:28 +0100, "A.recca" <a.recca a siciliawebplus.it> wrote:

>Ad esempio ho scaricato dalla rete questo script....

Mi sembra orribile quello script...

import pprint

from twisted.internet import reactor
from twisted.internet import defer
from twisted.web import client

import BeautifulSoup as bsoup

def hrefs(page):
    return list(anchor.get('href') for anchor in bsoup.BeautifulSoup(page).findAll('a'))

def crawler(urls):
    deferreds = []
    for url in urls:
        d = client.getPage(url)
        d.addCallback(lambda page: (url, hrefs(page)))
        deferreds.append(d)
    return defer.DeferredList(deferreds)

urls = [
    "http://www.twisted.it/",
    "http://www.twistedmatrix.com/",
    "http://www.yahoo.com",
    "http://www.digg.com",
    "http://www.divmod.org/",
    "http://www.virgilio.it",
    "http://www.vodafone.it",
    "http://www.google.com",
]

crawler(urls).addCallback(pprint.pprint).addBoth(lambda _: reactor.stop())

reactor.run()

Come ti ho detto si usa la programmazione asincrona, se non sai cosa sia l'ideale non e` ripetere la domanda uguale a prima aggiungendo piu` linee ma cercare cosa sia la programmazione asincrona.


Maggiori informazioni sulla lista Python