1
breeswish 2013-07-17 14:13:00 +08:00 1
举个栗子:
需要监听一个队列,监听操作是阻塞操作. 因此用了多线程 如果没有while true: 队列来消息以后,处理完毕,线程结束 如果有while true: 来消息,处理完毕,继续监听下一个消息 |
2
BOYPT 2013-07-17 14:14:46 +08:00 1
没有都吧,看你的Thread需要干什么而已。需要他一直在等某事情就while True咯,只需要他一干完就滚蛋就直接从头到尾写咯。
|
3
nybux 2013-07-17 14:36:29 +08:00 1
举个例子吧:比如你后台每隔5分钟要扫描一些东西。你可以每隔5分钟启动一个线程,做完后结束。但是更稳妥的方法是启动一个线程,让她一直干。扫描完一次后让他睡5分钟。
这个也就是你看到的 while True: work() 这种模式 |
7
sykp241095 2013-07-17 16:56:37 +08:00
太搞笑了。
|
8
ratatata OP @breeswish
@BOYPT @nybux 多谢回复,的确豁然开朗。 我现在在学习做一个爬虫,爬百度,深度定为 1 的时候,可以在链接全部爬完的时候,自动结束进程,返回结果,运行良好。 但在爬取深度定为 2 的时候,就会出现当队列里为空且不会再有新链接进来的时候,线程就一直处于 while True 的死循环了... 代码如下: https://gist.github.com/zackmore/6018982 各位大侠能否帮忙看看问题出在哪?感激不尽 |