国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python 多進程使用

瀏覽:75日期:2022-08-01 17:10:45

問題描述

假設:有個數據操作,處理100萬條數據,每個數據的value+1。如簡單代碼假設

for x in range(1,100): x++

從數據庫獲取100條了,然后想多進程去執行x++?還是說多進程去數據庫獲取數據?謝謝了

問題解答

回答1:

有一個問題: 如果是數據庫里面的數據, 為什么不執行sql,這比什么多進程要高效的多吧?如果非要你給出的二選一, 那么考慮一下:

1). 如果你要用多進程去數據庫獲取數據(就算你用了mysql連接池,可以不怎么考慮數據庫連接的io消耗),你每取一次數據,總要有一次查詢吧, 完了以后,你還要把更新后的數據寫入到數據庫了, 又是一次數據庫操作,想想這個消耗有多大?2). 數據庫獲取100萬數據,然后想多進程去執行x++; 這種情況啊,只要計算機內存夠(只有100萬數據,基本是沒問題的), 用python的進程池map一下,確實也是沒什么問題回答2:

先將原始數據存入隊列(queue)中,作為生產者后從隊列中取數據,執行操作,作為消費者這時,可以在消費者開多線程(當然你鎖處理得好的話,生產者也可以做多線程)

while tmp_queue.empty() is not True: x = tmp_queue.get() x += 1

在隊列中,如果一直存在元素線程會持續進行操作。

回答3:

其實Python中實現多進程的最佳方式是使用multiprocessing中的map

例子(Python 3):

# f.py# 要對某個列表中每個元素都執行一次的functiondef f(x): return x + 1

# main.pyfrom multiprocessing import poolfrom f import f# 創建進程池p = pool.Pool(4)lst = range(100)# 使用多進程對整個列表進行計算print(p.map(f, lst))回答4:

你可以直接把數據讀取和數據+1兩個函數再寫到一個操作中啊,然后用多進程去操作,就上樓上說的一樣用進程池進行操作。根據你的cpu核數,設置進程池的大小。由于多進程間不進行內存共享、也不能直接通信,你先用多進程從數據庫中把所有數據讀出來,然后再用多進程進行val+1也行的

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 五月六月伊人狠狠丁香网 | 国产精品久久久久久影院 | 国产精品亚洲精品日韩已方 | 国产伦码精品一区二区 | 国产伦码精品一区二区 | 中文字幕在线观看91 | 免费观看女人一摸全是水 | 国产成人毛片精品不卡在线 | 午夜性福利 | 日本暖暖在线视频 | 性a视频 | 亚洲国产一 | 免费亚洲视频 | 99久免费精品视频在线观看2 | 中文字幕亚洲综合久久 | 久久成人亚洲 | 亚洲日韩中文字幕 | 久草草视频在线观看免费高清 | 综合久久99久久99播放 | 日本一级看片免费播放 | 亚洲精品美女在线观看 | 亚洲九九色| 97高清国语自产拍中国大陆 | 99在线免费观看 | 美国一级毛片片aaa 美国一级毛片片aa成人 | 免费看特级淫片日本 | 美女黄色在线 | 日本人成在线视频免费播放 | 黄网站在线播放视频免费观看 | 女人张开腿男人猛桶视频 | 在线看欧美成人中文字幕视频 | 大量真实偷拍情侣视频野战 | 免费一看一级毛片全播放 | 网友自拍第一页 | 国产色视频一区二区三区 | 久久国产精品夜色 | 免费视频一区二区三区四区 | 99久久精品国产9999高清 | 手机在线观看a | 精品国产90后在线观看 | 特级毛片8级毛片免费观看 特级毛片免费观看视频 |