[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