Re: py

作者: sustainer123 (caster)   2024-09-27 22:26:48
※ 引述《cities516 (椒丘單推人)》之銘言:
: → cities516: 我記得multi thread跟multi process鎖法剛好相反 09/26 18:14
: → cities516: 一個是一邊跑另一邊鎖 另一個是兩邊一起跑 09/26 18:14
: → sustainer123: py thread有gil鎖 只要用cpython都會這樣 09/26 18:15
: → sustainer123: multi thread實際上只會跑一個 09/26 18:16
: → sustainer123: 我有看到加c的擴充處理這問題 但好麻煩 09/26 18:16
: → sustainer123: 另一種就Coroutine+multi processㄅ 09/26 18:17
: 肥肥也沒很熟
: 單純是以前修Distributed Systems時有碰過
: 但是已經記憶久遠了 技術生疏 搞不好講的內容都是錯的
: py裡的multi thread 就像sus大師說的
: 因為每個線程共用記憶體 所以需要上鎖控制 acquire和release
: 遇到網路I/O類型的任務 就會用到
: multi process的話
: 則是 大型任務拆分
: 像是matrix A * matrix B
: 實際上可以拆解成好幾個小A和小B互乘之後 再結合起來就好
: 然後我稍微查了一下
: py內建的multiprocessing似乎不會用到map跟reduce
: 不過map reduce是甚麼我也忘了
: 就像去超商當條碼師不需要學微積分一樣
先說明multi thread
每個子線程會共享記憶體
所以我們可以上鎖避免一些問題
或者把東西變成區域變數
這邊可利用ThreadLocal
ThreadLocal是全域變數
每個thread可以賦值特定屬性並讀寫
這邊每個thread就只會讀到自己賦予的值
寫入也不會影響到其他thread
然後關於mapreduce
我想你想討論的是分散式進程?
就我對mapreduce的理解
map是將大資料拆成小資料
reduce是將小資料合併
中間印象還有Shuffle
不過我沒修過分散式系統 不太確定:)))
如果py要搞跨機器的multiprocessing
我看裡面有個manager的東東
但我要再研究一下 姆咪

Links booklink

Contact Us: admin [ a t ] ucptt.com