欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 多線程共享全局變量的優(yōu)劣

 更新時間:2020年09月24日 09:05:27   作者:小名叫小明  
這篇文章主要介紹了python 多線程共享全局變量的優(yōu)劣,幫助大家更好的理解和學習python多線程,感興趣的朋友可以了解下

一、多線程共享全局變量

首先我們來回憶下在函數(shù)中修改全局變量的情況。

在一個函數(shù)中,對全局變量進行修改的時候,到底是否需要使用 global 進行說明,要看是否對全局變量的執(zhí)行指向進行了修改。

如果修改了執(zhí)行指向,即讓全局變量指向了一個新的地方,那么必須使用 global。

如果僅僅是修改了指向的空間中的數(shù)據(jù),此時不是必須要使用 global。

我們來看一個例子,在這個例子中,讓一個子線程對全局變量 +1 操作,另一個子線程只打印全局變量,看看數(shù)據(jù)是否共享。

from threading import Thread
import time

g_num = 100

def work1():
  global g_num
  g_num += 1
  print("----in work1, g_num is %d---" % g_num)

def work2():
  print("----in work2, g_num is %d---" % g_num)

def main():
  print("---線程創(chuàng)建之前g_num is %d---" % g_num)

  t1 = Thread(target=work1)
  t1.start()

  # 延時一會,保證t1線程中的事情做完
  time.sleep(1)

  t2 = Thread(target=work2)
  t2.start()

  time.sleep(1)
  print("---線程創(chuàng)建之后g_num is %d---" % g_num)

if __name__ == "__main__":
  main()

如果子線程2打印出來的結果是100,說明全局變量不共享。

如果子線程2打印出來的數(shù)據(jù)是101,說明全局變量共享。

運行結果:

---線程創(chuàng)建之前g_num is 100---
----in work1, g_num is 101---
----in work2, g_num is 101---
---線程創(chuàng)建之后g_num is 101---

上面的例子說明,多線程是共享全局變量的。

二、列表當做實參傳遞到線程中

在上面,我們驗證了多線程之間是共享全局變量的。

我們也可以將變量當作實參傳遞到線程中,來驗證多線程中是共享數(shù)據(jù)的。

from threading import Thread
import time

def work1(nums):
  nums.append(44)
  print("----in work1---", nums)

def work2(nums):

  print("----in work2---", nums)


g_nums = [11, 22, 33]

t1 = Thread(target=work1, args=(g_nums,))
t1.start()
# 延時一會,保證t1線程中的事情做完
time.sleep(1)
t2 = Thread(target=work2, args=(g_nums,))
t2.start()

運行結果:

----in work1--- [11, 22, 33, 44]
----in work2--- [11, 22, 33, 44]

那為什么多個線程之間要共享全局變量,有什么好處么?

因為多任務往往配合使用。

在一個進程內的所有線程共享全局變量,就可以很方便在多個線程間共享數(shù)據(jù)。

缺點就是,線程是對全局變量隨意修改可能造成多線程之間對全局變量的混亂(即線程非安全)。

以上就是python 多線程共享全局變量的優(yōu)劣的詳細內容,更多關于python 多線程共享全局變量的資料請關注腳本之家其它相關文章!

相關文章

  • 如何用Python獲取計算機名,ip地址,mac地址

    如何用Python獲取計算機名,ip地址,mac地址

    這篇文章主要介紹了如何用Python獲取計算機名,ip地址,mac地址,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python opencv相機標定實現(xiàn)原理及步驟詳解

    Python opencv相機標定實現(xiàn)原理及步驟詳解

    這篇文章主要介紹了Python opencv相機標定實現(xiàn)原理及步驟詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • pycharm+robot開發(fā)及配置指南

    pycharm+robot開發(fā)及配置指南

    這篇文章主要介紹了pycharm+robot開發(fā)指南,包括pycharm配置及robot的配置,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • Python之列表推導式最全匯總(下篇)

    Python之列表推導式最全匯總(下篇)

    這篇文章主要介紹了Python之列表推導式最全匯總(下篇),本文章內容詳細,通過案例可以更好的理解列表推導式的相關知識,本模塊分為了三部分,本次為下篇,需要的朋友可以參考下
    2023-01-01
  • Ubuntu下安裝卸載python3.8的過程

    Ubuntu下安裝卸載python3.8的過程

    這篇文章主要介紹了Ubuntu下python3.8的安裝與卸載,本文以在 Ubuntu 16.04 中安裝為例,方法同樣適用于 Ubuntu 18.04,需要的朋友可以參考下
    2021-09-09
  • 很酷的python表白工具 你喜歡我嗎

    很酷的python表白工具 你喜歡我嗎

    這篇文章主要為大家分享了一款很酷的python表白工具,可以發(fā)給女生表白用,界面簡單,實用性強,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python中global關鍵字的用法詳解

    Python中global關鍵字的用法詳解

    Python是一種簡單而強大的編程語言,提供了許多功能和語法來幫助開發(fā)人員編寫高效的代碼,其中一個常用的功能是使用global關鍵字來在函數(shù)內部訪問和修改全局變量,在本文中,我們將深入探討Python中global關鍵字的用法,以及使用它的一些最佳實踐
    2023-12-12
  • python實現(xiàn)倒計時小工具

    python實現(xiàn)倒計時小工具

    這篇文章主要為大家詳細介紹了python實現(xiàn)倒計時小工具,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python二維碼生成識別實例詳解

    Python二維碼生成識別實例詳解

    這篇文章主要介紹了Python二維碼生成識別實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 論文查重python文本相似性計算simhash源碼

    論文查重python文本相似性計算simhash源碼

    這篇文章主要為大家介紹了python文本相似性計算simhash源碼來實現(xiàn)論文的查重,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02

最新評論