作者KSJ (阿真)
看板Python
标题[问题] python GIL 平行运算相关的问题
时间Fri Apr 1 04:09:40 2011
呼~ 上网找了很多相关资料 但还是一头误水
有人可以给我帮忙一下吗
我的认知 首先GIL会造成python的thread在多核cpu上反而比较慢
但如果是用Cextension的话 就不用考虑这个问题
(怎麽样叫Cextension呢??)
否则 要能够快的话 需要使用process?? 似乎是产生二个python interpreter
像跑msn跟skype二个无关的程式 分别用不同的cpu就行了
缺点是 二个process不好直接沟通
(二个process怎麽指定cpu啊?? 是os自己指定的吗)
我上网找了parallel python (pp) 里面说得好神奇啊~
pp 可以解决GIL的问题 使用了process跟IPC 就行了…
pp是全用python写的…为什麽能解决GIL,多核的问题呢
我看了一下pp的程式码 里面有import socket
我认为IPC就是指socket的部份
用在两process之间沟通
网上也有些实验说pp在"process之间的沟通量很大"的时候 效果不显着
感觉pp必顺花时间在复制这些讯息上
另外pp还能调整cpu的使用数…这个一般是怎麽做到的呢
(几个cpu就开几个process 让os自己选吗??)
因为pp 用socket 所以可以用cluster计算 我觉得颇强大
本来pp测试起来是不错 但是我将它放到QGIS上面
import pp 建个server类别的 instance
竟然会让QGIS再开一个 然後出现一些错误… 这个超过我能debug的范围orz…
所以我才想说有没有什麽自己实作多核加速的算法
应该说是平行运算吧?? 才能自己掌握能加在QGIS上
python2.6之後有multiprocessing模组 但我是用2.5的 还没有去细看
不知道效果如何 算不算天生支援多核了呢??
希望版上有在做这块的人 能够给我一些建议 感谢你 <(_ _)>
ps.如果多核(multi-core)、多台(cluster)的平行运算有难度
我也想试试只有"多台"的平行运算 因为至少比一台好啊XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.63.249