python之執行緒相關操作 補充

2022-04-20 07:57:03 字數 3774 閱讀 5213

1 執行緒的其他方法

import

threading

import

time

from threading import

thread, current_thread

deff1(n):

time.sleep(1)

print('

子執行緒名稱

', current_thread().getname())

print('

子執行緒id

', current_thread().ident)

print('

%s號執行緒任務

' %n)

if__name__ == '

__main__':

t1 = thread(target=f1, args=(1,))

t1.start()

t2 = thread(target=f1, args=(1,))

t2.start()

print('

主線程名稱

', current_thread().getname())

print('

主線程id

', current_thread().ident)

print(current_thread()) #

當前執行緒物件

print(threading.enumerate()) #

當前正在執行的執行緒物件的乙個列表

print(threading.active_count()) #

當前正在執行的執行緒數量

2 執行緒佇列 

首先匯入模組 import queue

先進先出佇列:queue.queue(3)

先進後出\後進先出佇列

:queue.lifoqueue(3)  

優先順序佇列:queue.priorityqueue(3)

其中都是相同的方法

import

queue

## 先進先出佇列

#q = queue.queue(3)

#q.put(1)

#q.put(2)

#print('當前長度', q.qsize())

#print('是否滿了', q.full())

#q.put(3)

#print('是否滿了', q.full())

#try:

#q.put_nowait(5)

#except exception:

#print('滿了')

#print(q.get())

#print(q.get())

#print('是否空了', q.empty())

#print(q.get())

#print('是否空了', q.empty())

#try:

#print(q.get_nowait())

#except exception:

#print('空了')

## 先進後出佇列, 類似於棧

#q = queue.lifoqueue(3)

#q.put(1)

#q.put(2)

#q.put(3)##

print(q.get())

#print(q.get())

#print(q.get())

#'''#3

#2#1

#'''

#優先順序佇列

q = queue.priorityqueue(7)

q.put((6, '

today

')) #

存放乙個元組, 第乙個元素是優先順序, 越小優先順序越高

q.put((-3, '

yesterday'))

q.put((5, '

tomorrow'))

q.put((12, 12))

q.put((5, '

july'))

q.put((7,23))

q.put((7,123))

print

(q.get())

print

(q.get())

print

(q.get())

print

(q.get())

print

(q.get())

print

(q.get())

print

(q.get())

'''(-3, 'yesterday')

(5, 'july')

(5, 'tomorrow')

(6, 'today')

(7, 23)

(7, 123)

(12, 12)

'''

3 執行緒池

首先匯入

from concurrent_futures import threadpoolexecutor,processpoolexecutor

import

time

from threading import

current_thread

from concurrent.futures import

threadpoolexecutor,processpoolexecutor

deff1(n,s):

time.sleep(1)

#print('%s號子執行緒'%current_thread().ident)

#print(n,s)

return

if__name__ == '

__main__':

tp = threadpoolexecutor(4)

#tp = processpoolexecutor(4)

#tp.map(f1,range(10)) #非同步提交任務,引數同樣是任務名稱,可迭代物件

res_list =

for i in range(10):

res = tp.submit(f1,i,'

baobao

') #

submit是給執行緒池非同步提交任務,

print

(res)

#res.result()

#for r in res_list:

#print(r.result())

tp.shutdown()

#主線程等待所有提交給執行緒池的任務,全部執行完畢 close + join

for r in

res_list:

print(r.result()) #

和get方法一樣,如果沒有結果,會等待,阻塞程式

print('

主線程結束

')

執行緒池**函式:

from  concurrent.futures import

threadpoolexecutor, processpoolexecutor

deff1(n, n1):

return n +n1

deff2(n):

print(n) #

print('

這裡是**函式:

', n.result()) #

這裡是**函式: 23

if__name__ == '

__main__':

tp = threadpoolexecutor(4)

res = tp.submit(f1, 11,12).add_done_callback(f2)

Qt之執行緒補充

1 定義 class hk r version cmd public qthread 輸出結果 struct dataout public explicit hk r version cmd hk r version cmd int setdatain struct datain datain in...

python之str相關操作

ord 函式是 chr 函式 對於8位的ascii字串 或 unichr 函式 對於unicode物件 的配對函式,它以乙個字元 長度為1的字串 作為引數,返回對應的 ascii 數值 ord a 97 ord b 98chr 用乙個範圍在 range 256 內的 就是0 255 整數作引數,返回...

Python 物件導向 補充類相關

建立類物件的類type 通過type函式建立類 def run self print self type dog print print dict d.print d d.run 檢測類物件中是否明確 metaclass 屬性 檢測父類中是否存在 metaclass 屬性 檢測模組中是否存在 met...