国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

thread local in python

李義 / 1907人閱讀

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

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

各線程獨(dú)享自己的變量,但是使用全局變量 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
應(yīng)用實(shí)例

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/45010.html

相關(guān)文章

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

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

    huangjinnan 評(píng)論0 收藏0
  • Python多線程

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

    dcr309duan 評(píng)論0 收藏0
  • python學(xué)習(xí)筆記 - ThreadLocal

    摘要:為了避免改亂為,我們?cè)谇懊嬉呀?jīng)提到說(shuō)要加鎖。僅供一個(gè)線程使用,線程間相互不影響。例如下列程序中函數(shù)中定義的變量就是局部變量。所有綁定的參數(shù)都是線程隔離的。下面展示一下代碼創(chuàng)建一個(gè)全局的對(duì)象初始化一個(gè)線程內(nèi)變量,該變量線程間互不影響。 我們?cè)诰帉懚嗑€程程序的時(shí)候,往往會(huì)遇到兩種類型的變量。 一種是全局變量,多個(gè)線程共享。為了避免改亂為,我們?cè)谇懊嬉呀?jīng)提到說(shuō)要加鎖。 一種是局部變量。僅供...

    Berwin 評(píng)論0 收藏0
  • python模塊之threading

    摘要:的類行為是的類行為的子集,目前尚不支持優(yōu)先級(jí)線程組,線程無(wú)法銷毀停止暫停恢復(fù)或中斷。表示繼承創(chuàng)建該線程的當(dāng)前線程的屬性。重入鎖,同步原語(yǔ)的一種,可由同一線程多次獲取已持有的鎖。 threading在低級(jí)的_thread模塊上構(gòu)建了更高級(jí)的線程接口。 threading模塊基于Java線程模型設(shè)計(jì)。不過(guò)Java中鎖和條件變量是每個(gè)對(duì)象的基本行為,在python中卻是單獨(dú)的對(duì)象。pytho...

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

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

    DataPipeline 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<