日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

redis实例python_生产消费者模式与python+redis实例运用(基础篇)

發布時間:2024/7/19 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis实例python_生产消费者模式与python+redis实例运用(基础篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

根據這個圖,我們舉個簡單的例子:假如你去某個餐廳吃飯,點了很多菜,廚師要一個一個菜的做,一個廚師不可能同時做出所有你點的菜,于是你有兩個選擇:第一個,廚師把所有菜都上齊了,你才開始吃;還有一個選擇,做好一個菜,端上桌一個你開始吃一個。這里的廚師就是生產者,而你就是消費者,菜就是圖中的product(產物)。我們可以很明顯的感覺到,第一種選擇會浪費很多時間,因為生產者要把所有產物生產完畢,消費者才開始從存儲中介當中去取,而且可能會浪費大量的內存空間,上萬條數據讀到內存中或許你沒有覺得,但是一旦數據量大了,就會很耗內存(這里指代存儲中介可能是吧數據讀到內存中);于是乎,生產消費者的優勢就出現了。

在開始之前我們要明白,既然是生產消費者模式,那么我們的代碼中就一定需要一個生產者,也需要一個消費者,在設計的時候我們要考慮到:1、生產者的速度跟不上消費者消費的速度,2、消費者速度跟不上生產者速度且存儲中介因為某些原因只能容納多少數據量。

針對以上第兩點問題,這個時候對于資源就需要經過鎖或者睡眠或者其他的操作來合理的分配,我們可以讓消費者每次取的時候看看存儲中介中是否有值,沒有值的話就等待一會再取,生產者每次往存儲中介中放數據的時候看一下是否快滿了,如果快滿了也一樣睡眠一會再看是否可以放。針對消費者消費過慢的情況,我們可以在代碼中開多進程和協程來解決這個問題,就好比這桌菜又多上得有快,我們就可以請幾個朋友一起來吃,共同消費。對于生產消費者模式如果加鎖,注意對于資源不要死鎖就行,這部分會在《生產消費者模式與python+redis實例運用(中級篇)》里面寫到

好了,基本原理和問題解決方針都有了,我們可以開始最基礎的操作來實現一波:

首先是生產者的代碼:

importtime

importredis

pool=redis.ConnectionPool(host='localhost',port=6379,db=1,decode_responses=True)

r=redis.Redis(connection_pool=pool)

defproduct(i):

length=r.llen("goods2")

print(length)

iflength>5000:

print("長度過大睡一會")

time.sleep(1)

product(i)

else:

#生產者r.lpush("goods2","good1"+str(i))

print("加入一個值睡一會")

# time.sleep(5)if__name__ == '__main__':

# 此處表示循環10000次,往redis里面放10000次數據fori inrange(10000):

product(i)

我們可以看到,每次當redis中的數據量大于5000的時候我們都讓程序sleep一會,然后再去判斷是否可以放,不能再睡1s。

接下來是消費者的代碼:

fromDBUtil import*

fromclickhouse_driver importClient

importdatetime

importtime

importpandas aspd

frompandasql importsqldf

importredis

pool=redis.ConnectionPool(host='localhost',port=6379,db=1,decode_responses=True)

r=redis.Redis(connection_pool=pool)

defusers():

length = r.llen("goods2")

print(length)

whilelength>0:

goods = r.lpop("goods2")

print(goods)

ifstr(goods)=="None":

print("無值多等等")

time.sleep(10)

else:

print("無值等等")

time.sleep(10)

users()

if__name__ == '__main__':

users()

我們也可以看到,在redis隊列中沒有數據的時候,我們讓消費者等10s,再次去請求。

好了,基礎篇介紹到這里,接下來我們會介紹如何解決生產者過快,消費者過慢的問題解決方式以及生產消費者在python中實例運用,歡迎收看!

總結

以上是生活随笔為你收集整理的redis实例python_生产消费者模式与python+redis实例运用(基础篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人天堂新地址 | wwwwxxxx欧美| 亚洲av无一区二区三区怡春院 | 国产毛片毛片毛片毛片毛片 | 国产精品乱码一区二三区小蝌蚪 | 91不卡在线 | 欧美最黄视频 | 精品国产乱码久久久久久蜜臀网站 | 99精品人妻无码专区在线视频区 | av女人的天堂 | 伊伊总综合网 | sm乳奴虐乳调教bdsm | 亚欧成人在线 | 亚洲影音先锋 | 亚洲 欧美 激情 小说 另类 | 色在线免费视频 | 亚洲国产日韩a在线播放性色 | 精品熟女一区二区三区 | 婷婷tv| 欧美视频免费看欧美视频 | 天天操天天碰 | 香蕉国产在线 | 2019中文字幕在线免费观看 | 亚洲色图 校园春色 | 日韩福利 | 操碰在线视频 | 欧美精品四区 | 亚洲一区二区三区在线视频 | 国产精品自拍在线观看 | 黑人一区| 国产一级做a爱片久久毛片a | 久久国产精品影视 | 超碰在线香蕉 | 亚洲免费成人在线 | 亚洲精品日韩欧美 | 午夜丰满寂寞少妇精品 | 欧洲一区在线观看 | 日韩免费av片 | 国产激情一区二区三区在线观看 | 午夜视频一区二区三区 | 在线观看v片 | 欧美成人午夜视频 | 亚洲xx网 | 国内自拍第三页 | 日本黄色片 | 国产探花一区二区 | 美女视频黄色在线观看 | 在线免费观看中文字幕 | 久久男| 偷拍亚洲精品 | 污污软件在线观看 | 在线观看成人免费视频 | 免费观看av网址 | 2025国产精品视频 | 亚洲视频a| 91黄色短视频 | 国产欧美日韩激情 | 九九久久综合 | 日韩手机看片 | 国产黄色录相 | 日韩一区二区精品视频 | 国产网站免费在线观看 | 久久精品视频一区 | 久久综合资源 | av在线影片 | 91久操| 美女污软件| 艳妇乳肉豪妇荡乳av无码福利 | 性生交大片免费看3p | 艳妇乳肉豪妇荡乳av无码福利 | 伊人一级片 | 日韩高清一区二区 | av最新地址 | 巨乳免费观看 | 亚洲精品视频三区 | 中文字幕一区二区三区精品 | heyzo久久 | 看av网| 亚洲成年 | 少妇2做爰交换朴银狐 | 欧美国产成人精品一区二区三区 | 天天干天天做 | 国产精品剧情 | 国产乱子伦精品无码专区 | 人人妻人人玩人人澡人人爽 | 老司机一区二区三区 | 在线观看欧美精品 | 少妇av在线播放 | 综合久| 天堂av2019 | 天堂а√在线中文在线 | 网站免费视频www | 丰满女人又爽又紧又丰满 | 日韩视频精品一区 | 黄色在线a | 精品中文字幕av | 黑人糟蹋人妻hd中文字幕 | 探花av在线 | 国产在线观看av |