現在又佇列長度為n的乙個任務佇列需要處理,同時處理的任務數目為m,如何處理
python3中threading.thread 執行緒,通過start() 方法來啟動,較為簡單的方法就是開始m個任務,m個任務都結束,再執行下一批m個任務,這裡就用到了 futures ,其中又executor.submit() 和 map()方法,分別是有序和無序執行任務。但是這裡的問題就出現了,任務的不同操作時間,讓其餘已完成任務的執行緒出現了等待時間。
執行緒類:
class pool_item(threading.thread):
def __init__(self, threadid, name, counter):
threading.thread.__init__(self)
self.threadid = threadid
self.name = name
self.counter = counter
def run(self):
thread_lock.acquire()
global current_index
while current_index < account_len:
if self.threadid == 1:
print(self.name, current_index)
current_index = current_index + 1
temp = current_index
thread_lock.release()
time.sleep(random.randint(3, 10))
thread_lock.acquire()
print(u'執行緒', self.name, "*************************===")
thread_lock.release()
主方法
for i in range(20):
t = pool_item(i, '[thread-%d]' % i, i)
t.setdaemon(false)
t.start()
執行效果
[thread-1] 1
所有完畢
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
[thread-1] 37
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
[thread-1] 52
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
[thread-1] 71
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
[thread-1] 89
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒數量是21
執行緒 18 [thread-18] *************************===
執行緒 5 [thread-5] *************************===
執行緒數量是19
執行緒 1 [thread-1] *************************===
執行緒 4 [thread-4] *************************===
執行緒 11 [thread-11] *************************===
執行緒 3 [thread-3] *************************===
執行緒數量是15
執行緒 12 [thread-12] *************************===
執行緒數量是14
執行緒 13 [thread-13] *************************===
執行緒 15 [thread-15] *************************===
執行緒 8 [thread-8] *************************===
執行緒 19 [thread-19] *************************===
執行緒數量是10
執行緒 10 [thread-10] *************************===
執行緒 9 [thread-9] *************************===
執行緒數量是8
執行緒 7 [thread-7] *************************===
執行緒 6 [thread-6] *************************===
執行緒數量是6
執行緒 16 [thread-16] *************************===
執行緒 14 [thread-14] *************************===
執行緒數量是4
執行緒 2 [thread-2] *************************===
執行緒 0 [thread-0] *************************===
執行緒數量是2
執行緒 17 [thread-17] *************************===
執行緒數量是1
process finished with exit code 0
python佇列執行緒池 Python多執行緒與佇列
多執行緒爬蟲對比單執行緒爬蟲有很大的優勢,雖然python中的多執行緒並不是真正意義上的多執行緒,執行緒不可以同時執行,而是順序序列執行的,只是在乙個執行緒在等待時,cpu切換到另外乙個執行緒接著幹活,這樣看起來就感覺像是並行。雖然如此,多執行緒的效率仍然比單執行緒快上很多倍,是爬蟲中不可缺少的技能...
執行緒池 1 任務佇列模組
執行緒池的思想早有耳聞,中間也涉及好多內容,回過頭來重新設計一下執行緒池.使用者視角 1.建立乙個執行緒池物件,threadpool thpool int minthreads 同時會建立乙個管理者執行緒,負責維護執行緒池,可以通過演算法動態排程增加或減少執行緒 2.加入乙個任務 int thpoo...
執行緒池概念,任務
問題 執行緒是寶貴的記憶體資源,單個執行緒約佔1mb空間,過多分配易造成記憶體溢位 頻繁的建立及銷毀執行緒會增加虛擬機器 頻率 資源開銷,造成程式效能下降 執行緒池 執行緒容器,可設定執行緒分配的數量上限 將預先建立的執行緒物件存入池中,並重用執行緒池中的執行緒物件 避免頻繁的建立和銷毀 將任務提交...