python 多執行緒模組參考

2022-08-10 10:39:09 字數 3134 閱讀 2273

threading.active_count()

返回當前處於 active 狀態的執行緒的數目

threading.current_thread()

返**用者當前的 thread 物件

threading.get_ident()

返回當前執行緒的「thread identifier」屬性(3.3新增)

threading.enumerate()

返回當前處於 active 狀態的執行緒組成的列表

threading.settrace(func)

為所有從 threading 模組生成的執行緒新增 trace function

threading.setprofile(func)

為所有從 threading 模組生成的執行緒新增 profile function

threading.stack_size([size])

返回建立執行緒時分配的棧空間大小,或通過引數進行設定

注:上面有個別函式是無法通過「from threading import *」匯入的,必須通過「.」來訪問。

threading.timeout_max

此常量限定 timeout 引數的最大值,超則overflowerror(3.2新增)

thread-local data 用於存放「執行緒區分」的資料。要想使用它,只須建立乙個 local 類例項(或子類)然後在它的屬性裡儲存資料。不同執行緒訪問該例項的屬性值,是不同的。

>>> mydata = threading.local()

>>> mydata.x = 1

>>> type(mydata)

給構造器傳乙個可呼叫物件(可以是函式,也可以是覆蓋了 __call__() 方法的類例項)

子類化 thread 類,並覆蓋 run() 方法

>>> threading.current_thread()

<_mainthread(mainthread, started 1808)>

>>> threading.current_thread().name

'mainthread'

>>> type(threading.current_thread())

class threading.thread(group=none,target=none,name=none,args=(),kwargs={},*,daemon=none)

thread 類的屬性和方法:

start()

run()

join(timeout=none)

name

getname() / setname()

ident

is_alive()

daemon

isdaemon() / setdaemon()

class threading.lock

acquire(blocking=true,timeout=-1)

release()

class threading.rlock

acquire(blocking=true,timeout=-1)

class threading.condition(lock=none)

acquire(*args)

release()

wait(timeout=none)

wait_for(predicate,timeout=none)

notify(n=1)

notify_all()

class threading.semaphore(value=1)

acquire(blocking=true,timeout=none)

release()

class threading.boundedsemaphore(value=1)

舉個栗子:

semaphore 常用於守護限制訪問的資源,比如資料庫。實際上在任何對訪問有數量限制的情形下,你都應該使用 bounded semaphore 物件。在建立大量的訪問執行緒前,你的主線程應該先初始化這個 semaphore。:

max_connection = 5

#...

pool_sema = boundedsemaphore(value=max_connection)

with pool_sema:

with connectdb():

#...use connection...

class threading.event

class threading.timer(interval,function,args=none,kwargs=none)

cancel()

class threading.barrier(parties,action=none,timeout=none)

wait(timeout=none)

reset()

abort()

parites

n_waiting

broken

exception threading.brokenbarriererror

本模組裡的物件,只要有 acquire() 、release() 這對方法的,都支援上下文管理協議。其中 acquire() 會在 __enter__() 裡呼叫,release() 會在 __quit__() 裡呼叫。因此,下面的用法:

with some_lock:

#do sth.

等價於:

some_lock.acquire()

try:

#do_sth.

finally:

some_lock.release()

python多執行緒模組 threading使用方法

先來看這段 import threading import time def worker print worker time.sleep 1 return for i in xrange 5 t threading.thread target worker t.start 這段 就使用了多執行緒,...

python多執行緒模組threading學習

本文主要介紹threading模組的使用。1.建立乙個threading.thread類的物件,並在初始化函式 init 中傳入可呼叫物件作為執行目標。初始化函式原型以下是threading.thread類的初始化函式原型 definit self,group none,target none,na...

Python多執行緒 threading模組

用threading模組,可以實現python多執行緒程式設計。import threading import time def video secs for i in range secs print 邊看 操.d i time.sleep 1 def dance secs for i in ra...