1 執行緒的其他方法
importthreading
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)
其中都是相同的方法
importqueue
## 先進先出佇列
#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))
(q.get())
(q.get())
(q.get())
(q.get())
(q.get())
(q.get())
(q.get())
'''(-3, 'yesterday')
(5, 'july')
(5, 'tomorrow')
(6, 'today')
(7, 23)
(7, 123)
(12, 12)
'''
3 執行緒池
首先匯入
from concurrent_futures import threadpoolexecutor,processpoolexecutor
importtime
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是給執行緒池非同步提交任務,
(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 importthreadpoolexecutor, 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...