我正在使用线程和队列模块在Python中编写一个简单的爬虫程序.我获取一个页面,检查链接并将它们放入队列,当某个线程完成处理页面时,它从队列中抓取下一个.我正在为我已经访问过的页面使用一个数组来过滤我添加到队列中的链接,但是如果有多个线程并且它们在不同页面上获得相同的链接,则它们会将重复的链接放入队列.那么如何才能找出某个url是否已经在队列中以避免再次将其放入队列中?
我正在Stack Overflow 上浏览这个答案。我来了解存在OrderedSet于Python的。我想知道它是如何在内部实现的。它类似于集合的哈希表实现吗?
另外,插入、删除、查找等一些常见操作的时间复杂度是多少?
我正在使用Python队列:
q = Queue.Queue()
Run Code Online (Sandbox Code Playgroud)
我正在将某个类的对象放入上述队列中q.put(item).但是,在将项目放入队列之前,我想检查它是否已存在于队列中.有没有办法做到这一点?[没有取出队列中的所有对象然后将它们全部推回]
另外:
我不知道我怎么能真正看到我放入队列的变量(调试时).我正在使用Pydev,而我在variables窗口中看到的只是not_empty和not_full.我怎么能在运行时看到队列中的内容?