1. 程式人生 > >Python3 多執行緒程式設計(thread、threading模組)

Python3 多執行緒程式設計(thread、threading模組)

threading是對thread的封裝。

1、開啟執行緒:

    t=threading.Thread(target=sayhi,args=('hh',))
    t.start()

或者先建一個Thread的繼承類,然後用這個類中的start()方法開啟;

2、主程序下開啟子程序:

    t=multiprocessing.Process(target=work)
    t.start()

   程式會先執行主程式的語句,再執行此子程序的目標函式work();

3、t.setDadmon() 設定守護程序;必須在start()之前設定;如果為True則主程式不用等此執行緒結束後再結束主程式;

1 t.join()                 等待執行緒結束;
2 t.isAlive()              返回執行緒是否活動;
3 t.getName()               返回執行緒名。
4 t.setName()               設定執行緒名。
5 threading.currentThread()    返回當前執行緒變數;
6 threading.enumerate()        返回一個包含正在執行執行緒的列表;
7 threading.activeCount()      返回正在執行的執行緒數量;
8 threading.Semaphore(5)       限制最大連線數為5,semaphore是一個acquire,release的計數器;

多執行緒用於IO密集型,如socket,爬蟲,web

多程序用於計算密集型,如金融分析

4、同步鎖

R=threading.Lock()
R.acquire()
'''
對公共資料的操作
'''
R.release()

用於對共享資源同步訪問的限制,只有當一個執行緒訪問完畢後另一個執行緒才能訪問。

5、死鎖

使用RLock()代替Lock()可解決,因為RLock()使資源可以被多次acquire,但只有直到一個執行緒所有的acquire都被release之後其他執行緒才能獲得資源。

而使用Semaphore(n)則可限制資源的同時最大可訪問執行緒數;

6、Event物件

用於多執行緒之間的通訊和同步,初始情況下event物件中訊號標誌為False;

Event物件方法:

1 isSet()          返回event的狀態值;
2 wait()           如果event.isSet() == False 將阻塞執行緒,即等待;
3 set()          設定event的狀態值;
4 clear()          恢復event的狀態值為False; 

7、執行緒queue

例項queue.Queue()    先進先出;

例項queue.LifoQueue()      後進先出;

例項queue.PriorityQueeu() 接受一個優先順序引數,根據優先順序大小決定順序;

相關推薦

Python3 執行程式設計threadthreading模組)

threading是對thread的封裝。 1、開啟執行緒: t=threading.Thread(target=sayhi,args=('hh',)) t.start() 或者先建一個Thread的繼承類,然後用這個類中的start()方法開啟; 2、主程序下開啟子

python執行程式設計二)--threading模組

threading模組物件 物件 描述 Thread 一個執行緒的執行物件 Lock 鎖物件 RLock 可重入鎖物件,使單執行緒可以再次獲得已經獲得了的鎖(遞迴鎖定) Condition 條件變數,讓一個執行緒停下來,等待其它執行緒滿足了某個條件 Event

Java 程序與執行執行實現ThreadRunnableCallable)

程序與執行緒的概念 程序: 作業系統中一個程式的執行週期稱為一個程序。(是程式的一次動態執行,它對應著從程式碼載入,執行至執行完畢的一個完整的過程,是一個動態的實體) windows是一個多程序的作業系統。 執行緒: :一個程式同時執行多個任務。通常,每一個任務就稱為一個執行緒。與程序相

執行程式設計3工併發處理)

例:假設我們有個方法要執行100次,得到100次返回的結果總和。 序列執行 static void Main(string[] args) { SerialExcute();

[python] 專題八.執行程式設計threadthreading

        就個人而言,學了這麼多年的課程又寫了這麼多年的程式,雖然沒有涉及到企業級的專案,但還是體會到了有幾個知識點是非常重要的,包括:面向物件的思想、如何架構一個專案、設計模式來具體解決問題、應用機器學習和深度學習的方法,當然也包括我這篇文章的內容——多執行緒和並行

C#非同步執行總結delegateThreadTaskThreadPoolParallelasynccancel)

同步與非同步多執行緒的區別: 1、同步方法卡介面(UI執行緒忙於計算);非同步多執行緒不卡介面(主執行緒閒置,子執行緒在計算) 2、同步方法慢(CPU利用率低、資源耗費少);非同步多執行緒快(CPU利用率高、資源耗費多) 3、同步方法是有序的;非同步方法是無序的(啟動無序、執行時間不確定、結

Java併發十八):阻塞佇列BlockingQueue BlockingQueue阻塞佇列)詳解 二叉堆(一)之 圖文解析 和 C語言的實現 多執行緒程式設計:阻塞併發佇列的使用總結 Java併發程式設計:阻塞佇列 java阻塞佇列 BlockingQueue阻塞佇列)詳解

阻塞佇列(BlockingQueue)是一個支援兩個附加操作的佇列。 這兩個附加的操作是:在佇列為空時,獲取元素的執行緒會等待佇列變為非空。當佇列滿時,儲存元素的執行緒會等待佇列可用。 阻塞佇列常用於生產者和消費者的場景,生產者是往佇列裡新增元素的執行緒,消費者是從佇列裡拿元素的執行緒。阻塞佇列就是生產者

C++——執行程式設計二)std::mutex 執行同步解決資源競爭問題

前言 執行緒同步 這裡的“同”不是同時、一起執行的意思,而是指協同、協助、互相配合。執行緒同步是指多個執行緒協同步調,按預定的先後次序進行執行。 執行緒A和B一塊配合,A執行到一定程度時要依靠B的某個結果,於是停下來,示意B執行;B依言執行,再將結果給A;

python3 執行程式設計

內容借鑑: https://www.cnblogs.com/z-joshua/p/6409362.html https://www.cnblogs.com/hoobey/p/6915638.html 執行緒的掛起與阻塞的: 掛起:一般是主動的,由系統或程式發出,甚至

Linux學習之執行程式設計二)

言之者無罪,聞之者足以戒。 ——《詩序》 (二)、執行緒的基本控制 1、終止程序: 如果程序中的任意一個程序呼叫了exit、_exit、_Exit,那麼整個程序就會終止 普通的單個程序有以下3種退出方式,這樣不會終止程序: (1)從啟動例程中返回,返回值是執行緒的退

Linux學習之執行程式設計四)

言之者無罪,聞之者足以戒。 ——《詩序》 三、Linux執行緒的高階控制 1、一次性初始化 有些事需要且只能執行一次(比如互斥量初始化)。通常當初始化應用程式時,可以比較容易地將其放在main函式中。但當你寫一個庫函式時,就不能在main裡面初始化了,你可以用靜態初始化

Linux學習之執行程式設計六)

言之者無罪,聞之者足以戒。 ——《詩序》 4、執行緒私有屬性 應用程式設計中有必要提供一種變數,使得多個函式多個執行緒都可以訪問這個變數(看起來是個全域性變數),但是執行緒對這個變數的訪問都不會彼此產生影響(貌似不是全域性變數哦),但是你需要這樣的資料,比如errno。那

Java執行程式設計-1)-執行安全和鎖Synchronized概念

一、程序與執行緒的概念 (1)在傳統的作業系統中,程式並不能獨立執行,作為資源分配和獨立執行的基本單位都是程序。 在未配置 OS 的系統中,程式的執行方式

Java執行程式設計-5)-使用Lock物件實現同步以及執行間通訊

前幾篇: 在《Java多執行緒程式設計-(4)-執行緒間通訊機制的介紹與使用》已經學習了,可以使用方法wait/notify 結合同步關鍵字syn

執行程式設計一)——寫一個簡單的死鎖

(整個九月忙著找工作,好多收穫,好多遺憾,最終結局還可以接受,技術路還很遠,再接再厲!面去哪兒網時,寫慣了演算法的我突然讓寫了幾個多執行緒程式設計,有點矇蔽,最近好好整理一下) 死鎖發生的原因: 1、

執行程式設計二)——面試題,每個執行只打印一種字元,執行協同順序列印n次字串求大神的其他實現方案)

(這個是歡聚時刻(YY)的筆試題,在筆試的時候沒有寫出來,後來自己寫了出來,希望大神能給出更優秀的解決方案……ps:現在面試官總有面試時問筆試程式設計題思路的習慣,呵呵) 題目簡述: 輸入一個字串以

Linux 執行程式設計一)

Linux 多執行緒程式設計 執行緒(Thread)已被許多作業系統所支援,包括Windows/NT ,Linux 以前的多執行緒其實是多程序,而現在意味著一個程序中有多個執行緒 使用多執行緒的原因(多執行緒的優點): 1.“節省”,啟動一個新的程序需要分配給它獨立的地

Java執行程式設計-11)-面試常客ThreadLocal出現OOM記憶體溢位的場景和原理分析

一、案例程式碼 1、首先看一下程式碼,模擬了一個執行緒數為500的執行緒池,所有執行緒共享一個ThreadLocal變數,每一個執行緒執行的時候插入一個大的List集合: 2、設定JVM引數設定最大記憶體為256M,以便模擬出OOM: 3、執行程式碼,輸出結果: 可以看出,單執行緒池

Java執行程式設計-14)-無鎖CAS操作以及Java中Atomic併發包的“18羅漢”

原文出自 : https://blog.csdn.net/xlgen157387/article/details/78364246 上一篇: Java多執行緒程式設計-(13)- 關於鎖優化的幾點建議 一、背景 通過上面的學習,我們應該很清楚的

ava執行程式設計-13)- 關於鎖優化的幾點建議

原文出自 : https://blog.csdn.net/xlgen157387/article/details/78363616 一、背景 在《 Java多執行緒程式設計-(11)-從volatile和synchronized的底層實現原理看Java虛擬機器對鎖