工作中遇到的場景,這裡寫個例子出來,實際應用比此處更為健壯和完善
應用場景:
對一張表10萬條資料(或100萬或1億+)進行更新操作或寫入操作;
菜鳥是一條一條的執行吧,這顯然不行啊
我在實際專案中是這樣應用的, 批量更新!當然這顯然是不夠的 要執行緒批量更新才對吧!
怎麼做呢?
舉例1:10萬條資料 ,我1000條1000條的處理 就是,10萬/1000 = 100 ,
這裡我就用100個執行緒同時處理,每個執行緒負責1000條資料,這裡有個關鍵點,處理的資料不能重複!
給個**示例吧:
執行緒池中線程數量可以根據 資料量/單個執行緒處理數量 來計算
public
class
dyschedule
public
static
void
dojob
() pool.shutdown();
}public
static
void
main
(string args)
}
以下是每個執行緒要執行的內容
public class
mythread
extends
thread
}
程式執行結果:
執行緒:pool-
1-thread-1
startline = 0
,endline = 1000
執行緒:pool-
1-thread-2
startline = 1000
,endline = 2000
執行緒:pool-
1-thread-5
執行緒:pool-
1-thread-3
startline = 2000
,endline = 3000
startline = 3000
,endline = 4000
執行緒:pool-
1-thread-4
startline = 4000
,endline = 5000
執行緒:pool-
1-thread-6
執行緒:pool-
1-thread-7
startline = 6000
,endline = 7000
startline = 5000
,endline = 6000
執行緒:pool-
1-thread-9
startline = 7000
,endline = 8000
執行緒:pool-
1-thread-8
startline = 8000
,endline = 9000
執行緒:pool-
1-thread-10
startline = 9000
,endline = 10000
執行緒:pool-
1-thread-12
startline = 10000
,endline = 11000
執行緒:pool-
1-thread-11
startline = 11000
,endline = 12000
執行緒:pool-
1-thread-16
startline = 12000
,endline = 13000
執行緒:pool-
1-thread-15
執行緒:pool-
1-thread-19
startline = 14000
,endline = 15000
startline = 13000
,endline = 14000
執行緒:pool-
1-thread-20
startline = 15000
,endline = 16000
....
....
這裡只把每個執行緒要處理的資料行數或分割號列舉處理了,
比如以上
執行緒:pool-1-thread-1
startline = 0,endline = 1000 處理資料庫0-1000行的資料
執行緒:pool-1-thread-2
startline = 1000,endline = 2000 處理1000-2000行的資料
接下來的批量任務內容是不是簡單多了,不多少了,記住這裡關鍵點就是保證資料不重複!,不遺漏!
這樣子的思路幾百萬或者幾千萬級別的批量處理是沒有什麼問題的,
但是 你有幾個億或者幾百億的資料需要批量處理怎麼辦呢? 小夥子 別急,作為一名資深程式設計師當然還是有辦法的
需要吧以上思路或方案設計成分布式,多工,多執行緒的schedule 就可以了,
批量VS多執行緒
在實際的編碼過程中,總會遇到單一處理會有效能風險的問題,於是我們求助於批量或者多執行緒。一 批量處理 一般情況下批量處理就可以規避大部分效能風險的問題。將fetch 改為batchfetch 多數情況都比較簡單,尤其是呼叫其他應用的介面時,將單一介面,換成批量介面即可 而最終主要是修改資料從資料庫中...
多執行緒處理mysql資料
閒來無事研究了下py,發現多執行緒處理起資料來比php不要爽太多,廢話少說上碼 author yao import mydb from time import ctime,sleep def mythread db for i in xrange 10 sql select from y user ...
python多執行緒處理資料
python多執行緒處理資料 從檔案讀取資料,多執行緒處理 usr bin env python encoding utf 8 import threading import time from queue import queue def readfile file object open opt...