Skip to main content
 首页 » 编程设计

python之这个 while 循环是如何退出的

2025年05月04日13小虾米

那么,这段代码是如何在线程启动时退出while语句的呢? (请不要考虑缩进)

class ThreadUrl(threading.Thread): 
    """Threaded Url Grab""" 
    def __init__(self, queue, out_queue): 
        threading.Thread.__init__(self) 
        self.queue = queue 
        self.out_queue = out_queue 
 
    def run(self): 
        while True: 
            #grabs host from queue 
            host = self.queue.get() 
 
            #grabs urls of hosts and then grabs chunk of webpage 
            url = urllib2.urlopen(host) 
            chunk = url.read() 
 
            #place chunk into out queue 
            self.out_queue.put(chunk) 
 
            #signals to queue job is done 
            self.queue.task_done() 

** 编辑 *

启动线程的代码:

def main(): 
 
#spawn a pool of threads, and pass them queue instance 
    for i in range(5): 
        t = ThreadUrl(queue) 
        t.setDaemon(True) 
        t.start() 
 
    queue.join() 

请您参考如下方法:

它不必退出 while 语句来终止代码。这里发生的一切是线程消耗了队列中的所有内容,此时 queue.join() 返回。

一旦主代码中对 queue.join() 的调用返回,主代码将退出,因为您将线程标记为守护进程,整个应用程序将退出,您的后台线程将退出被杀。