我正在使用 urllib2 进行数据抓取调用,但它们每个都需要大约 1 秒才能完成。我试图测试是否可以将 URL 调用循环多线程化到具有不同偏移量的线程中。
我现在使用 update_items() 方法执行此操作,其中第一个和第二个参数是执行循环的偏移量和限制:
import threading
t1 = threading.Thread(target=trade.update_items(1, 100))
t2 = threading.Thread(target=trade.update_items(101, 200))
t3 = threading.Thread(target=trade.update_items(201, 300))
t1.start()
t2.start()
t3.start()
#t1.join()
#t2.join()
#t3.join()
像代码一样,我试图注释掉 join() 以防止线程等待,但似乎我对这个库的理解是错误的。我将 print() 函数插入到 update_items() 方法中,有趣的是它表明它仍然只是在串行例程中循环,而不是所有 3 个线程并行,就像我想要实现的那样。
我的正常抓取协议大约需要 5 个小时才能完成,而且它只是非常小的数据,但 HTTP 调用总是需要一些时间。我想多线程这个任务至少几次,以将提取时间至少缩短到 30-45 分钟左右。