原文请见
搞大数据必须要正视的一个问题就是并行计算。就像执行一件任务一样,大伙一起同时干,才有效率,才会很快出成果。正所谓“众人拾柴火焰高”~
对于并行计算,有很多高大上的概念,我也不全懂。这里就单单罗列一下我对于多进程和多线程计算的理解和总结。
先说“多进程”:
在Python中,实现多进程是比较容易的。我们可以使用multiprocessing进行进程的创建,比如说import multiprocessing as mp
p = mp.Process(target=run_proc, args=('fireling',), name='Run_procProcess')
p.start()
p.join()p = mp.Pool() p.map(run_proc, [i for i in range(m)]) p.close() p.join()
再说“多线程”:
和多进程的思路类似,我们也可以实现对线程的创建,在Python中,使用threading包实现。比如说import threading
t = threading.Thread(target=run_thread, args=('fireling', ), name='Run_threadThread')
t.start()
t.join()lock = threading.Lock()
lock.acquire() # 获取线程锁 xxxxxxxxxxx 此处省略若干代码 lock.release() # 释放线程锁
public class Test
{
public static void main(String[] args)
{
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Runnable1:" + Thread.currentThread().getName());
// System.out.println("Runnable2:" + this.getName());
}
}
}) {
@Override
public void run() {
while(true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread1:" + Thread.currentThread().getName());
System.out.println("Thread2:" + this.getName());
}
}
};
thread.start();
}
}
关于”协程“:
Python能实现多个线程,但是实际上无法充分利用系统资源,原因在于Python存在全局锁机制,简单来说,就是同一时刻在一个进程中只能有一个线程对数据进行操作。所以实现并行效果,采用多进程方法,比较好。版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/lining0806/article/details/47106341