又是我的一个问题..又遇到了一些问题。希望能找到一个更聪明并且知道这一点的人.. :D
我现在遇到线程问题,当打开 (1,1000) 范围内的线程 url 时,我很想看到所有不同的 url。只有当我运行代码时,我才会得到很多双变量(可能是因为爬行速度如此之快)。无论如何,这是我的代码:我尝试查看它在哪个线程,但我得到了双打。
import threading
import urllib2
import time
import collections
results2 = []
def crawl():
var_Number = thread.getName().split("-")[1]
try:
data = urllib2.urlopen("http://www.waarmaarraar.nl").read()
results2.append(var_Number)
except:
crawl()
threads = []
for n in xrange(1, 1000):
thread = threading.Thread(target=crawl)
thread.start()
threads.append(thread)
# to wait until all three functions are finished
print "Waiting..."
for thread in threads:
thread.join()
print "Complete."
# print results (All numbers, should be 1/1000)
results2.sort()
print results2
# print doubles (should be [])
print [x for x, y in collections.Counter(results2).items() if y > 1]
但是,如果我直接在 xrange 行下添加 time.sleep(0.1),则不会出现这些双打。尽管这确实使我的程序减慢了很多。任何人都知道解决此问题的更好方法吗?