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>你的代码看起来很好,很干净。在</p> <p>应用程序仍然“挂起”的原因是工作线程仍在运行,等待主应用程序将某些内容放入队列,即使主线程已完成。在</p> <p>解决此问题的最简单方法是在调用start之前执行<code>t.daemon = True</code>,将线程标记为守护进程。这样,线程就不会阻止程序停止。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
Python中两个字典的交集
5 回答
python中两个字符串上的异或操作数?
7 回答
Python中两个字符串中的类似句子
2 回答
Python中两个字符串之间的Hamming距离
6 回答
python中两个字符串之间的匹配模式
3 回答
python中两个字符串之间的按位或
2 回答
python中两个字符串之间的数据(字节)切片
4 回答
python中两个字符串之间的模式
8 回答
python中两个字符串作为子字符串的区别
7 回答
Python中两个字符串元组的比较
1 回答
Python中两个字符串列表中的公共字符串
9 回答
python中两个字符串的Anagram测试
4 回答
Python中两个字符串的正则匹配
6 回答
python中两个字符串的笛卡尔乘积
9 回答
Python中两个字符串相似性的比较
8 回答
python中两个字符串语义相似度的求法
7 回答
Python中两个字符置换成固定长度的字符串,每个字符的数目相等
4 回答
Python中两个对数方程之间的插值和平滑数据
5 回答
Python中两个对象之间的And/Or运算符
5 回答
python中两个嵌套字典中相似键的和值
3 回答