多執行緒和多程序

2022-08-31 09:00:10 字數 2113 閱讀 8720

一、多執行緒

在python中,多執行緒庫為threading.

建立乙個執行緒物件

import

threading as td

import

time

defcountnum(n):

print("

running on number:%s

"%n)

time.sleep(3)

if__name__=='

__main__':

t1=td.thread(target=countnum,args=(23,)) #函式不能加括號,args引數只有乙個時後面要加逗號

t2= td.thread(target=countnum, args=(14,))

t1.start()

t2.start()

print("

ending

")

thread例項物件的方法:

isalive()        #返回執行緒是否活動

getname()     #返回執行緒名

setname()    #設定執行緒名

threading模組提供的一些方法:

threading.currentthread()   #返回當前的執行緒變數

threading.enumerate()        #返回乙個包含正在執行的執行緒的list

threading.activatecount()    #返回正在執行的執行緒數量

無論有多少個cpu,python在執行乙個程序時,同一時刻只能允許乙個執行緒執行。

因此python無法利用多核cpu實現多執行緒。

同步鎖(lock)

鎖通常被用來實現對共享資源的同步訪問。為每乙個共享資源建立乙個lock物件,當你需要訪問該資源時,呼叫acquire方法來獲取鎖物件(如果其它執行緒已經獲得了該鎖,則當前執行緒需等待其被釋放),待資源訪問完後,再呼叫release方法釋放鎖:

import

threading

r=threading.lock()

r.acquire()

'''公共資料的操作

'''r.release()

佇列

import

queue

q=queue.queue(maxsize=10) #

若小於1,則佇列長度無限

q.put(10) #

呼叫佇列物件的put()方法在對尾插入乙個專案

q.get() #

呼叫佇列物件的get()方法從隊頭刪除並返回乙個專案

q.task_done() #

表示某個任務完成,每一條get語句後需要一條task_done

q.join() #

阻塞程序,直到所有任務完成.即等到隊列為空時,再執行別的操作

q.qsize() #

返回佇列大小

q.empty() #

當隊列為空時返回true

q.full() #

當隊列為滿時返回true

python的queue模組中有三種佇列即建構函式

fifo(先進先出),lifo(先進後出),priorityqueue優先順序佇列

二、多程序

multiprocessing包是python中的多程序管理包。與threading.thread類似,它可以利用multiprocessing.process物件來建立乙個程序。該程序可以執行在python程式內部編寫的函式。該process物件與thread物件的用法相同,也有start(), run(), join()的方法。此外multiprocessing包中也有lock/event/semaphore/condition類 (這些物件可以像多執行緒那樣,通過引數傳遞給各個程序),用以同步程序,其用法與threading包中的同名類一致。

程序池程序池內部維護乙個程序序列,當使用時,去程序池中獲取乙個程序,如果程序池序列中沒有可供使用的程序,那麼程式就會等待,直到程序池中有可用程序為止。

程序池的幾個重要方法:

terminate:立刻關掉執行緒池

join:主程式等待所有子程式執行完畢

close:等所有程序結束後關閉程序池

多程序和多執行緒

嵌入式linux中文站,關於多程序和多執行緒,教科書上最經典的一句話是 程序是資源分配的最小單位,執行緒是cpu排程的最小單位 這句話應付考試基本上夠了,但如果在工作中遇到類似的選擇問題,那就沒有那麼簡單了,選的不好,會讓你深受其害。經常在網路上看到有xdjm問 多程序好還是多執行緒好?linux下...

多執行緒和多程序

首先說什麼是程序,載入記憶體中執行的程式,它就是乙個程序,而這個程式中執行的某個子任務就是乙個執行緒,程式包含了執行緒。程序對於執行緒是唯一的,而乙個程序可以有多個執行緒。程式執行的時候每隔一定時間在多執行緒之間執行,比如第乙個執行緒執行到0.01秒,馬上暫停跳到下乙個執行緒開始執行,又執行到0.0...

多程序和多執行緒

一 python 中多程序的使用 1 使用multiprocessing p process target function,args 引數,p.start 含義啟動程序 p.join 含義是等待子程序結束後在繼續執行 2 如果啟動大量的子程序,可以用程序池的方式批量建立子程序 from multi...