多執行緒學習典例python

2021-08-30 10:56:58 字數 3622 閱讀 7354

#coding:utf-8

importthreading

importrandom

importqueue

fromtimeimportsleep

importsys

#

#需求分析:有大批量資料需要執行,而且是重複乙個函式操作(例如爆破密碼),如果全部開始執行緒數n多,這裡控制住執行緒數m個並行執行,其他等待

#

#繼承乙個thread類,在run方法中進行需要重複的單個函式操作

classtest(threading.thread):

def__init__(self,queue,lock,num):

#傳遞乙個佇列queue和執行緒鎖,並行數

threading.thread.__init__(self)

self.queue=queue

self.lock=lock

self.num=num

defrun(self):

#while true:#不使用threading.semaphore,直接開始所有執行緒,程式執行完畢執行緒都還不死,最後的print threading.enumerate()可以看出

withself.num:#同時並行指定的執行緒數量,執行完畢乙個則死掉乙個執行緒

#以下為需要重複的單次函式操作

n=self.queue.get()#等待佇列進入

lock.acquire()#鎖住執行緒,防止同時輸出造成混亂

print'開始乙個執行緒:',self.name,,n

print'佇列剩餘:',queue.qsize()

printthreading.enumerate()

lock.release()

sleep(n)#執行單次操作,這裡sleep模擬執行過程

self.queue.task_done()#發出此佇列完成訊號

threads=

queue=queue.queue()

lock=threading.lock()

num=threading.semaphore(3)#設定同時執行的執行緒數為3,其他等待執行

#啟動所有執行緒

foriinrange(10):#總共需要執行的次數

t=test(queue,lock,num)

t.start()

#吧佇列傳入執行緒,是run結束等待開始執行,放下面單獨乙個for也行,這裡少個迴圈吧

n=random.randint(1,10)

queue.put(n)#模擬執行函式的逐個不同輸入

#吧佇列傳入執行緒,是run結束等待開始執行

#for t in threads:

#  n=random.randint(1,10)

#  queue.put(n)

#等待執行緒執行完畢

fortinthreads:

t.join()

queue.join()

print'所有執行完畢'

printthreading.active_count()

printthreading.enumerate()

**:

Python多執行緒學習

一 建立執行緒 1 通過thread模組中的start new thread func,args 建立執行緒 在eclipse pydev中敲出以下 coding utf 8 import thread def run thread n for i in range n print i thread...

Python多執行緒學習

首先了解一下單執行緒,在啊很多年前的ms dos時代,作業系統處理問題都是單任務的,我想做聽 和看電影兩件事兒,那麼一定要先排一下順序。from time import ctime,sleep defmusic for i in range 2 print i was listening to mu...

python學習 多執行緒

示例 import threading import time def stuthread arg1,arg2 print threading.current thread getname 開始執行 print 引數為 s s arg1,arg2 time.sleep 1 暫停1s print th...