最有可能您的問題與您快速解析HTML的能力無關,並且與連續任務的頁面檢索和阻塞延遲有關。
1-2秒是檢索頁面的合理時間量。你應該能夠在頁面上更快地找到文本。但是,如果您一次處理一個頁面,則可能會在查找結果時阻止您等待Web服務器的響應。您可以通過工作進程一次檢索多個頁面,並僅等待其輸出。
以下代碼已從Python's multiprocessing docs修改爲更緊密地適合您的問題。
import urllib
from multiprocessing import Process, Queue
def worker(input, output):
for func, args in iter(input.get, 'STOP'):
result = func(*args)
output.put(result)
def find_on_page(num):
uri = 'http://www.example.com/index.php?id=%d' % num
f = urllib.urlopen(uri)
data = f.read()
f.close()
index = data.find('datahere:') # obviously use your own methods
if index < 0:
return None
else:
return data[index:index+20]
def main():
NUM_PROCESSES = 4
tasks = [(find_on_page, (i,)) for i in range(99999)]
task_queue = Queue()
done_queue = Queue()
for task in tasks:
task_queue.put(task)
for i in range(NUM_PROCESSES):
Process(target=worker, args=(task_queue, done_queue)).start()
for i in range(99999):
print done_queue.get()
for i in range(NUM_PROCESSES):
task_queue.put('STOP')
if __name__ == "__main__":
main()
發佈您的代碼。 – Sylverdrag 2011-04-20 02:50:41
你確定開銷並不僅僅是在首先檢索數據?大多數網站需要1-2秒才能加載。 Python應該足夠快,適合你的任務。 – Adam 2011-04-20 02:54:18
你有沒有試過psyco? – 2011-04-20 02:58:20