python執行緒中join和和setDaemon

2021-08-30 14:04:12 字數 1641 閱讀 7334

join([timeout]) 主線程a中,建立子執行緒b,b呼叫join函式會使得主線程阻塞,直到子執行緒執行結束或超時。引數timeout是乙個數值型別,用來表示超時時間,如果未提供該引數,那麼主調執行緒將一直阻塞直到子執行緒結束。

注意:必須在start() 方法呼叫之後設定。注意:必須在start() 方法呼叫之後設定。

import threading

import time

class mythread(threading.thread):

def __init__(self, name):

super(mythread, self).__init__()

self.num = 5

self.name = name

def run(self):

print(self.name, ':start')

while self.num:

self.num -= 1

time.sleep(1)

print(self.name, ':over')

def main():

t = mythread('t')

t.start()

t.join()

for i in range(5):

print(i)

print('main done!')

if __name__ == '__main__':

main()

輸出如下:

t :start

t :over01

234main done!

如果不加入第行的t.join()則輸出如下,主線程不會等待子執行緒,並且主線程執行完後子執行緒仍在執行。

t :start01

234main done!

t :over

setdaemon()方法。主線程a中,建立子執行緒b,b呼叫setdaemon(),即把主線設定為守護執行緒,如果主線程執行結束,則不管子執行緒b是否完成,一併和主線程退出。

注意:必須在start() 方法呼叫之前設定。

import threading

import time

class mythread(threading.thread):

def __init__(self, name):

super(mythread, self).__init__()

self.num = 5

self.name = name

def run(self):

print(self.name, ':start')

while self.num:

self.num -= 1

time.sleep(1)

print(self.name, ':over')

def main():

t = mythread('t')

t.setdaemon(true)

t.start()

for i in range(5):

print(i)

print('main done!')

if __name__ == '__main__':

main()

Python多執行緒 join

宣告 本文介紹介紹的是thread.threading的 join方法 join timeout none wait until the thread terminates.this blocks the calling thread until the thread whose join meth...

python 執行緒中join方法的使用

1 作用 讓子執行緒插入主線程,可理解為在在join呼叫處把子執行緒的code move到了主線程,直到被插入的code執行結束,主線程接著下面的繼續 執行 2 觸發條件 手動呼叫或主線程要退出時自動呼叫 3 引數說明 join方法可可傳入引數表示子執行緒加入主線程的執行時間,超出此時間,強制結束子...

python 多執行緒中join 的作用

一 前言 溫習python 多程序語法的時候,對 join的理解不是很透徹,本文通過 實踐來加深對 join 的認識。multiprocessing 是python提供的跨平台版本的多程序模組。multiprocessing可以充分利用多核,提公升程式執行效率。multiprocessing支援子程...