多程序dthreading模組常用方法和類

2021-08-28 09:20:14 字數 2304 閱讀 6723

執行緒的建立於管理

執行緒同步技術

active_count()、activecount(): 返回當前處於alive狀態的thread物件數量

current_thread()、currentthread():返回當前thread物件

threading.get_ident:返回當前執行緒的執行緒識別符號,執行緒識別符號是乙個非負整數,並沒有特殊含義,只是用來標識執行緒,該執行緒可能會被迴圈利用,python3.3以後版本支援該方法

threading.enumerate:返回當前處於alive狀態的所有thread物件列表

threading.main_thread:返回柱香澄物件,即啟動python直譯器的執行緒物件,python3.4以後版本支援該方法

threading.stack_size([size]):返回建立執行緒時使用的棧大小,如果指定size引數,則用來指定後續建立的執行緒使用的棧的大小,size必須是0(表示使用系統預設值)或大於32k(k表示1024)的正整數

thread:執行緒類,用於建立和管理執行緒

event:事件類,用於執行緒同步

condition:條件類,用於執行緒同步

lock、rlock:鎖類,用於執行緒同步

semaphore: 訊號量類, 用於執行緒同步

timer: 用於在指定時間之後呼叫乙個函式的情況

import threading

print

(threading.stack_size())

# 檢視當前執行緒棧的大小

print

(threading.stack_size(64*

1024))

# 設定當前執行緒棧的大小

print

(threading.stack_size())

print

(threading.active_count())

# 檢視活動執行緒數量

print

(threading.current_thread())

# 返回當前執行緒物件

print

(threading.

enumerate()

)# 列舉所有的執行緒

defdemo

(v):

print

(v)t = threading.timer(

3, demo, args=(5

,))# 建立執行緒

t.start(

)# 啟動執行緒, 3s之後呼叫demo函式

t.cancel(

)# 如果仍在等待時間到達, 則取消

建立執行緒

直接使用thread類例項化乙個執行緒物件並傳遞乙個可呼叫物件作為引數

繼承thread類並在派生類中重寫__init__()和run()方法繼承thread類並在派生類中重寫__init__()和run()方法

建立執行緒物件以後,可以呼叫其start()方法來啟動,該方法自動呼叫該類物件的run()方法,此時該執行緒處於alive狀態,直至執行緒的run()方法執行結束

阻塞當前執行緒,等待被調執行緒結束或超時後在繼續執行當前執行緒的後續**,引數timeout用來指定最長等待時間,單位為秒

from threading import thread

import time

deffunc1

(x, y)

:for i in

range

(x, y)

:print

(i, end=

' ')

print()

time.sleep(10)

# 等待十秒

t1 = thread(target=func1, args=(15

,20))

# 建立執行緒物件, args是傳遞給函式的引數

t1.start(

)# 啟動執行緒

t1.join(5)

# 等待執行緒t1執行結束或等待5s

t2 = thread(target=func1, args=(5

,10))

t2.start(

)"""

思考: 注釋/刪除 t1.join(5): 兩個執行緒輸出將會重疊在一起,這是因為兩個執行緒併發執行,而不是等待乙個結束以後在執行

注釋/刪除 time.sleep(10): 兩個執行緒輸出沒有時間間隔,因為執行緒物件的join()方法當執行緒執行結束或超時之後返回,雖然指定了超時時間5s,而時間上線程函式瞬間就執行結束了

"""

待續…

待續…

多程序Multiprocessing模組

先看看下面的幾個方法 引數 用法 multiprocessing.process group none,target none,name none,args kwargs daemon none 寫乙個的例子 from multiprocessing import pool import os,ti...

python 多程序模組concurrent

from concurrent.futures import processpoolexecutor import time,os,random defpiao name,n print s is piaoing s name,os.getpid 列印了埠號 time.sleep random.ra...

python 多程序Process模組使用

引數介紹 1 group引數未使用,值始終為none 2 target表示呼叫物件,即子程序要執行的任務 3 args表示呼叫物件的位置引數元組,args 1,2,egon 4 kwargs表示呼叫物件的字典,kwargs 5 name為子程序的名稱 p.start 啟動程序,並呼叫該子程序中的p....