成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

thread local in python

李義 / 1921人閱讀

摘要:參考線程局部變量各線程獨享自己的變量,但是使用全局變量主線程也有自己的線程局部變量線程沒有屬性,子線程與主線程擁有各自的變量繼承應用實例

thread local in python

參考 Thread Locals in Python: Mostly easy

線程局部變量
import threading

mydata = threading.local()
mydata.x = "hello"

class Worker(threading.Thread):
    def run(self):
        mydata.x = self.name
        print mydata.x

w1, w2 = Worker(), Worker()
w1.start(); w2.start(); w1.join(); w1.join()
Thread-1
Thread-2

各線程獨享自己的變量,但是使用全局變量 mydata

主線程也有自己的線程局部變量
import threading

mydata = threading.local()
mydata.x = {}

class Worker(threading.Thread):
    def run(self):
        mydata.x["message"] = self.name
        print mydata.x["message"]
w1, w2 = Worker(), Worker()
w1.start(); w2.start(); w1.join(); w2.join()
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:Python27lib	hreading.py", line 801, in __bootstrap_inner
    self.run()
  File "E:/learn/python/test/thread_local.py", line 15, in run
    mydata.x["message"] = self.name
AttributeError: "thread._local" object has no attribute "x"

Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:Python27lib	hreading.py", line 801, in __bootstrap_inner
    self.run()
  File "E:/learn/python/test/thread_local.py", line 15, in run
    mydata.x["message"] = self.name
AttributeError: "thread._local" object has no attribute "x"

線程 w1,w2 沒有 x 屬性,子線程與主線程擁有各自的變量

繼承 threading.local
import threading

class MyData(threading.local):
    def __init__(self):
        self.x = {}

mydata = MyData()

class Worker(threading.Thread):
    def run(self):
        mydata.x["message"] = self.name
        print mydata.x["message"]

w1, w2 = Worker(), Worker()
w1.start(); w2.start(); w1.join(); w2.join()
Thread-1
Thread-2
應用實例

bottle 0.4.10

class Request(threading.local):
    """ Represents a single request using thread-local namespace. """

    def bind(self, environ):
        """ Binds the enviroment of the current request to this request handler """
        self._environ = environ
        self._GET = None
        self._POST = None
        self._GETPOST = None
        self._COOKIES = None
        self.path = self._environ.get("PATH_INFO", "/").strip()
        if not self.path.startswith("/"):
            self.path = "/" + self.path

#----------------------
request = Request()
#----------------------


def WSGIHandler(environ, start_response):
    """The bottle WSGI-handler."""
    global request
    global response
    request.bind(environ)
    response.bind()
    try:
        handler, args = match_url(request.path, request.method)
        if not handler:
            raise HTTPError(404, "Not found")
        output = handler(**args)
    except BreakTheBottle, shard:
        output = shard.output

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/45010.html

相關文章

  • 深入理解Python中的ThreadLocal變量(上)

    摘要:我們知道多線程環(huán)境下,每一個線程均可以使用所屬進程的全局變量。在線程中使用局部變量則不存在這個問題,因為每個線程的局部變量不能被其他線程訪問。 我們知道多線程環(huán)境下,每一個線程均可以使用所屬進程的全局變量。如果一個線程對全局變量進行了修改,將會影響到其他所有的線程。為了避免多個線程同時對變量進行修改,引入了線程同步機制,通過互斥鎖,條件變量或者讀寫鎖來控制對全局變量的訪問。 只用全局變...

    huangjinnan 評論0 收藏0
  • Python多線程

    摘要:多線程的理解多進程和多線程都可以執(zhí)行多個任務,線程是進程的一部分。多線程創(chuàng)建在中,同樣可以實現(xiàn)多線程,有兩個標準模塊和,不過我們主要使用更高級的模塊。多線程的應用場景。 1、多線程的理解 多進程和多線程都可以執(zhí)行多個任務,線程是進程的一部分。線程的特點是線程之間可以共享內存和變量,資源消耗少(不過在Unix環(huán)境中,多進程和多線程資源調度消耗差距不明顯,Unix調度較快),缺點是線程之間...

    dcr309duan 評論0 收藏0
  • python學習筆記 - ThreadLocal

    摘要:為了避免改亂為,我們在前面已經(jīng)提到說要加鎖。僅供一個線程使用,線程間相互不影響。例如下列程序中函數(shù)中定義的變量就是局部變量。所有綁定的參數(shù)都是線程隔離的。下面展示一下代碼創(chuàng)建一個全局的對象初始化一個線程內變量,該變量線程間互不影響。 我們在編寫多線程程序的時候,往往會遇到兩種類型的變量。 一種是全局變量,多個線程共享。為了避免改亂為,我們在前面已經(jīng)提到說要加鎖。 一種是局部變量。僅供...

    Berwin 評論0 收藏0
  • python模塊之threading

    摘要:的類行為是的類行為的子集,目前尚不支持優(yōu)先級線程組,線程無法銷毀停止暫?;謴突蛑袛?。表示繼承創(chuàng)建該線程的當前線程的屬性。重入鎖,同步原語的一種,可由同一線程多次獲取已持有的鎖。 threading在低級的_thread模塊上構建了更高級的線程接口。 threading模塊基于Java線程模型設計。不過Java中鎖和條件變量是每個對象的基本行為,在python中卻是單獨的對象。pytho...

    nanchen2251 評論0 收藏0
  • 深入理解Python中的ThreadLocal變量(中)

    摘要:在深入理解中的變量上中我們看到的引入,使得可以很方便地在多線程環(huán)境中使用局部變量。特別需要注意的是,基類的并不會屏蔽派生類中的創(chuàng)建。到此,整個源碼核心部分已經(jīng)理解的差不多了,只剩下用來執(zhí)行清除工作。 在 深入理解Python中的ThreadLocal變量(上) 中我們看到 ThreadLocal 的引入,使得可以很方便地在多線程環(huán)境中使用局部變量。如此美妙的功能到底是怎樣實現(xiàn)的?如果你...

    DataPipeline 評論0 收藏0

發(fā)表評論

0條評論

李義

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<