python 多執行緒程式設計(一個經典例子)
python 多執行緒經典案例(摘自《python核心程式設計》)
使用佇列的資料結構,生產者生產商品,消費者選取商品,且時間均不固定
from random import randint
from time import sleep
from queue import Queue
from threading import Thread
class ThreadFunc(Thread):
def __init__(self, target, args, name):
super().__init__(target=target, args=args, name=name)
self.func = target
self.args = args
self.name = name
def run(self):
self.func(self.args[0], self.args[1])
def writeQ(queue):
print("Producing object for Q...")
queue.put("xxx", 1)
print("size now", queue.qsize())
def readQ(queue):
val = queue.get(1)
print("consumed object from Q... size now", queue.qsize())
def writer(queue, loops) :
for i in range(loops):
writeQ(queue)
sleep(randint(1,3))
def reader(queue, loops):
for i in range(loops):
readQ(queue)
sleep(randint(2,5))
funcs = [writer, reader]
def main():
loops = randint(2,5)
q = Queue(32)
thread = list()
for i in range(2 ):
t = ThreadFunc(target=funcs[i], args=(q, loops), name=funcs[i].__name__)
thread.append(t)
for i in range(2):
thread[i].start()
for i in range(2):
thread[i].join()
print("all DONE!")
if __name__=="__main__":
main()
以下為輸出資訊(每次都不一樣)Producing object for Q...
size now 1
consumed object from Q... size now 0
Producing object for Q...
size now 1
consumed object from Q... size now 0
Producing object for Q...
size now 1
Producing object for Q...
size now 2
Producing object for Q...
size now 3
consumed object from Q... size now 2
consumed object from Q... size now 1
consumed object from Q... size now 0
all DONE!
相關推薦
python 多執行緒程式設計(一個經典例子)
python 多執行緒經典案例(摘自《python核心程式設計》) 使用佇列的資料結構,生產者生產商品,消費者選取商品,且時間均不固定 from random import randint from time import sleep from queu
python多執行緒程式設計(二)--threading模組
threading模組物件 物件 描述 Thread 一個執行緒的執行物件 Lock 鎖物件 RLock 可重入鎖物件,使單執行緒可以再次獲得已經獲得了的鎖(遞迴鎖定) Condition 條件變數,讓一個執行緒停下來,等待其它執行緒滿足了某個條件 Event
(Linux多執行緒程式設計(不限Linux))多執行緒操作
——本文一個例子展開,介紹Linux下面執行緒的操作、多執行緒的同步和互斥。 前言 執行緒?為什麼有了程序還需要執行緒呢,他們有什麼區別?使用執行緒有什麼優勢呢?還有多執行緒程式設計的一些細節問題,如執行緒之間怎樣同步、互斥,這些東西將在本文中介紹。我在某QQ群裡見到這樣一道面試題: 是否熟悉POS
ubuntu下C++多執行緒程式設計(cmake生成makefile)
最近做專案要用到多執行緒的程式設計,又要用到opencv因此採用cmake生成makefile然後進行編譯的方法比較簡單。這裡給出多執行緒的簡單例項。 主函式非常簡單: #include <iostream> #include <pthread.h&g
多執行緒程式設計(一)——寫一個簡單的死鎖
(整個九月忙著找工作,好多收穫,好多遺憾,最終結局還可以接受,技術路還很遠,再接再厲!面去哪兒網時,寫慣了演算法的我突然讓寫了幾個多執行緒程式設計,有點矇蔽,最近好好整理一下) 死鎖發生的原因: 1、
多執行緒程式設計(python語言)
眾所周知,多執行緒程式設計是一種可以提高整個任務效能的並行處理方式。多執行緒程式設計的主要特點有以下幾個方面,本質上是非同步的;需要多個併發活動;每個活動的處理順序可能是不確定的,或者說是隨機的、不可預測的。這種程式設計任務可以被組織或劃分成多個執行流,其中每個執行
Python多執行緒程式設計,執行緒鎖
1 2 3 from threading import Thread 4 import time 5 6 class MyThread(Thread): 7 name1 = 'MyThread-1' 8 def __init__(self,target,args
Python多執行緒程式設計,執行緒鎖,以及補充上一篇多程序文章
程序補充 程序間的訊號 訊號是唯一的非同步通訊方法 一個程序向另一個程序傳送一個訊號來傳遞某種資訊,接受者根據傳遞的資訊來做相應的事 $ kill -l檢視系統訊號說明 $ kill -9 pid號對程序傳送訊號 訊號名稱 說明
Python多執行緒程式設計
#!/usr/bin/python #!coding=utf-8 import threading import time exitFlag = 0 class MyThread(threading.Thread): def __init__(self, threadID, name, counte
談談python多執行緒程式設計
談談python多執行緒程式設計 Python中GIL概念 Python(CPython)不是執行緒安全的,所以我們需要一個GIL(Global interpreter Lock),來保證資料完性和安全性。也就是同一時間內同一核CPU中只能有一個GIL。 Threading的GI
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
多執行緒程式設計(二)——面試題,每個執行緒只打印一種字元,多個執行緒協同順序列印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虛擬機器對鎖