最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、多線程共享全局變量

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

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

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

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

我們來看一個(gè)例子,在這個(gè)例子中,讓一個(gè)子線程對(duì)全局變量 +1 操作,另一個(gè)子線程只打印全局變量,看看數(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()

  # 延時(shí)一會(huì),保證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打印出來的結(jié)果是100,說明全局變量不共享。

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

運(yùn)行結(jié)果:

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

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

二、列表當(dāng)做實(shí)參傳遞到線程中

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

我們也可以將變量當(dāng)作實(shí)參傳遞到線程中,來驗(yàn)證多線程中是共享數(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()
# 延時(shí)一會(huì),保證t1線程中的事情做完
time.sleep(1)
t2 = Thread(target=work2, args=(g_nums,))
t2.start()

運(yùn)行結(jié)果:

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

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

因?yàn)槎嗳蝿?wù)往往配合使用。

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

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

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

相關(guān)文章

  • python flask搭建web應(yīng)用教程

    python flask搭建web應(yīng)用教程

    今天小編就為大家分享一篇python flask搭建web應(yīng)用教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python數(shù)據(jù)持久存儲(chǔ) pickle模塊的基本使用方法解析

    python數(shù)據(jù)持久存儲(chǔ) pickle模塊的基本使用方法解析

    這篇文章主要介紹了python數(shù)據(jù)持久存儲(chǔ) pickle模塊的基本使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python實(shí)現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法

    python實(shí)現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法

    這篇文章主要介紹了python實(shí)現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法,涉及Python實(shí)現(xiàn)格式轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python外星人入侵游戲編程完整版

    Python外星人入侵游戲編程完整版

    這篇文章主要為大家詳細(xì)介紹了Python外星人入侵游戲編程完整的實(shí)現(xiàn)思路,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 使用pandas 將DataFrame轉(zhuǎn)化成dict

    使用pandas 將DataFrame轉(zhuǎn)化成dict

    今天小編就為大家分享一篇使用pandas 將DataFrame轉(zhuǎn)化成dict,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python調(diào)用Windows命令打印文件

    Python調(diào)用Windows命令打印文件

    Windows命令行打印文件使用print 命令,具體用法可使用help print查看,下面是使用Python調(diào)用print指令執(zhí)行打印文件功能的代碼,需要的朋友可以參考下
    2020-02-02
  • 詳解python分布式進(jìn)程

    詳解python分布式進(jìn)程

    在本專題里,小編給大家講述了關(guān)于python分布式進(jìn)程的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。
    2018-10-10
  • Python常用基礎(chǔ)模塊之os.path模塊詳解

    Python常用基礎(chǔ)模塊之os.path模塊詳解

    這篇文章主要介紹了Python常用基礎(chǔ)模塊之os.path模塊詳解,os模塊的子模塊os.path 是專門用于進(jìn)行路徑操作的模塊,常用的路徑操作主要有判斷目錄是否存在、創(chuàng)建目錄、刪除目錄和遍歷目錄等,需要的朋友可以參考下
    2023-08-08
  • Python爬蟲獲取全網(wǎng)招聘數(shù)據(jù)實(shí)現(xiàn)可視化分析示例詳解

    Python爬蟲獲取全網(wǎng)招聘數(shù)據(jù)實(shí)現(xiàn)可視化分析示例詳解

    這篇文章主要介紹了Python爬蟲獲取全網(wǎng)招聘數(shù)據(jù)實(shí)現(xiàn)可視化分析示例詳解,實(shí)現(xiàn)采集一下最新的qcwu招聘數(shù)據(jù),本文列舉了部分代碼以及實(shí)現(xiàn)思路,需要的朋友可以參考下
    2023-07-07
  • flask中過濾器的使用詳解

    flask中過濾器的使用詳解

    這篇文章主要介紹了flask中過濾器的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08

最新評(píng)論

裕民县| 湟源县| 衡东县| 米易县| 丹巴县| 清苑县| 临清市| 固原市| 安乡县| 桓台县| 卫辉市| 奉化市| 白河县| 固原市| 从化市| 九江市| 南皮县| 理塘县| 海兴县| 德兴市| 边坝县| 抚顺市| 昭苏县| 武城县| 治多县| 双城市| 漳平市| 尤溪县| 邛崃市| 景泰县| 同心县| 贞丰县| 孟连| 东台市| 武宁县| 巴中市| 雷州市| 钦州市| 阳江市| 蒙阴县| 平陆县|