※ 引述《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的东东
但我要再研究一下 姆咪