Python中文
首页
教程
问答
标签
搜索
登录
注册
需要一些关于Python线程/queu的帮助吗
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<pre><code>import threading import Queue import urllib2 import time class ThreadURL(threading.Thread): def __init__(self, queue): threading.Thread.__init__(self) self.queue = queue def run(self): while True: host = self.queue.get() sock = urllib2.urlopen(host) data = sock.read() self.queue.task_done() hosts = ['http://www.google.com', 'http://www.yahoo.com', 'http://www.facebook.com', 'http://stackoverflow.com'] start = time.time() def main(): queue = Queue.Queue() for i in range(len(hosts)): t = ThreadURL(queue) t.start() for host in hosts: queue.put(host) queue.join() if __name__ == '__main__': main() print 'Elapsed time: {0}'.format(time.time() - start) </code></pre> <p>我一直在试着弄清楚如何执行线程,在一些教程之后,我想出了上面的方法。在</p> <p>它应该做的是:</p> <ol> <li>初始化队列</li> <li>创建我的线程池,然后将主机列表排队</li> <li>我的ThreadURL类应该在主机进入队列并读取网站数据后开始工作</li> <li>程序应该结束了</li> </ol> <p>我首先想知道的是,我做得对吗?这是处理线程的最佳方法吗?在</p> <p>其次,我的程序无法退出。它打印出<code>Elapsed time</code>行,然后挂在那里。我必须杀死我的终端才能让它消失。我想这是因为我错误地使用了<code>queue.join()</code>?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>有一件事,在线程运行函数while True循环中,如果发生异常,则可能不会调用task\u done(),但get()已经被调用。因此队列.join()可能永远不会结束。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
Python中两个字典的交集
10 回答
python中两个字符串上的异或操作数?
9 回答
Python中两个字符串中的类似句子
5 回答
Python中两个字符串之间的Hamming距离
1 回答
python中两个字符串之间的匹配模式
6 回答
python中两个字符串之间的按位或
3 回答
python中两个字符串之间的数据(字节)切片
4 回答
python中两个字符串之间的模式
7 回答
python中两个字符串作为子字符串的区别
2 回答
Python中两个字符串元组的比较
4 回答
Python中两个字符串列表中的公共字符串
8 回答
python中两个字符串的Anagram测试
7 回答
Python中两个字符串的正则匹配
4 回答
python中两个字符串的笛卡尔乘积
6 回答
Python中两个字符串相似性的比较
1 回答
python中两个字符串语义相似度的求法
1 回答
Python中两个字符置换成固定长度的字符串,每个字符的数目相等
6 回答
Python中两个对数方程之间的插值和平滑数据
8 回答
Python中两个对象之间的And/Or运算符
8 回答
python中两个嵌套字典中相似键的和值
10 回答