簡體   English   中英

如果線程在無限while循環python中會發生什么

[英]What happens with a thread if it's in a infinite while loop python

我在python中找到了有關隊列的這篇文章: http : //www.blog.pythonlibrary.org/2012/08/01/python-concurrency-an-example-of-a-queue/

它工作正常,但我對此有疑問。 在線程的run方法中,我們看到:

def run(self):
    while True:
        # gets the url from the queue
        url = self.queue.get()

        # download the file
        self.download_file(url)

        # send a signal to the queue that the job is done
        self.queue.task_done()

線程處於無限while循環中,沒有調用break。 程序結束時該線程會發生什么?

這取決於您所說的“程序結束”。 如果主線程剛剛執行完畢,則有兩種可能性:

  1. 如果線程是非守護進程threading.Thread ,則正在運行的線程將無限期保持程序的活動。

  2. 如果線程是守護程序,則主線程結束后,線程將突然終止。

daemon屬性在文檔中的描述如下:

一個布爾值,指示此線程是否是守護線程(真)(假)。 必須在調用start()之前設置此項,否則會引發RuntimeError。 它的初始值是從創建線程繼承的; 主線程不是守護程序線程,因此在主線程中創建的所有線程默認為daemon = False。

當沒有活動的非守護線程時,整個Python程序將退出。

如果通過“程序結束”表示進程獲得SIGTERM或SIGKILL或類似的東西,則線程將與程序的其余部分一起終止,即使該daemon不是daemon

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM