python 阻塞執行緒和守護執行緒

2022-10-11 00:27:16 字數 1952 閱讀 3181

一、執行緒的建立

threading.thread建立乙個執行緒,返回乙個物件,用變數接收

變數.start啟動執行緒

# -*- coding:utf-8 -*-

# __author__:

# 2022/5/10

# gil:全域性直譯器鎖,只允許 同一時間只允許1個執行緒進入cpu,所以cpython中沒有並行,是併發

import threading,time

def foo(st):

for i in range(5):

time.sleep(1)

print(st)

# 1、threading.thread建立乙個執行緒,返回乙個物件

# 2、args入參是個元祖,所以括號最後要加上逗號;入參即foo函式的入參

# 3、target是目標函式

t1 = threading.thread(target=foo,args=('消費資料1',))

t2 = threading.thread(target=foo,args=('消費資料2',))

# 啟動執行緒

t1.start()

t2.start()

以上**最終結果是, '消費資料1'和'消費資料2'和換行符,併發進行,執行完後結束

二、阻塞執行緒join

join阻塞父執行緒:在子執行緒沒有執行完成之前,阻塞父執行緒;當子執行緒全都執行完成後,繼續執行父執行緒

# -*- coding:utf-8 -*-

# __author__:

# 2022/5/10

import threading

def foo(st):

for i in range(5):

print(st)

t1 = threading.thread(target=foo,args=('生產資料1',))

t2 = threading.thread(target=foo,args=('生產資料2',))

t1.start()

t2.start()

# join阻塞父執行緒:在子執行緒沒有執行完成之前,阻塞父執行緒;當子執行緒全都執行完成後,繼續執行父執行緒

# 執行.py檔案的時候,.py檔案的**執行相當於主(父)執行緒,兩個建立的t1t2相當於子執行緒

t1.join()

t2.join()

# 父執行緒中的**

print('繼續執行父執行緒')

以上**執行結果是:當t1和t2的併發執行緒結束後,才會執行主線程中的print語句

三、守護執行緒daemon

# -*- coding:utf-8 -*-

# __author__:pansy

# 2022/5/10

import threading

def foo(st):

for i in range(5):

print(st)

t1 = threading.thread(target=foo,args=('消費資料1',))

t2 = threading.thread(target=foo,args=('消費資料2',))

# 當沒有守護執行緒的時候,如果主線程執行完畢,此時子執行緒還沒執行結束,則主線程會等所有子執行緒執行完畢後再結束

# 當有守護執行緒的時候,如果主線程執行完畢,子執行緒還沒執行完畢,則主線程仍會結束,不會等待子執行緒

t1.daemon = true

t2.daemon = true

t1.start()

t2.start()

print('消費資料結束。。。。。')

以上**的結果是:當出現列印'消費資料結束。。。。。'時,表示主線程結束,不會等待子執行緒,此時不會繼續列印'消費資料1'和'消費資料2'

守護執行緒和非守護執行緒

基本概念 示例 非守護執行緒 public class mythread extends thread catch interruptedexception e system.out.println 執行緒 thread.currentthread getname 執行了 i 次 public st...

Python 守護執行緒

python 守護執行緒 如果你想等待子執行緒完成再退出,那就什麼都不用做。或者顯示地呼叫thread.setdaemon false 設定daemon的值為false。新的子執行緒會繼承父執行緒的daemon標誌。整個python會在所有的非守護執行緒退出後才會結束,即程序中沒有非守護執行緒存在的...

python 守護執行緒

一 基礎概念 1 守護執行緒 在主線程 執行結束後,等待其它子執行緒執行結束,守護執行緒結束 2 守護程序 隨著主程序 執行結束,守護程序結束 3 主線程執行結束,它所在的程序執行結束 4 主程序 執行結束,主程序並沒結束,等待其它子程序執行結束並 資源 二 示例 守護執行緒 import time...