python多进程与多线程学习总结

参考:http://www.cnblogs.com/virusolf/p/5458325.html

最近项目中用到了多进程和多线程的知识,花费了比较多的时间,在此进行总结,方便之后查阅。

经过查阅资料,知道,多进程指的是真正的并行运行,即各个进程之间互不干扰,我们通常所提到的多核就与多进程有关。而多线程就具有一定的局限性,多线程共享同一份资源,并不是真正意义上的并行运行,而是每个线程运行一小会,交替运行,这样给我们的感觉就像是并行运行一样。

对于多进程,要了解Pool这个概念,就是进程池,在这个进程池里,可以包含多个进程,不过这个最大数量是受到限制的。可以在使用之前确定最大进程数:

p = Pool(processes=4)

在进程中调用函数:

p.apply_async(sayHi,args=(m,))

要在进程中对某个数值进行修改,可以使用列表List,或者队列Queue,List可以随意存取,Queue遵循先进先出的原则,所以存取比较麻烦。

我在具体的应用中用到的是list,注意这块需要用到的是Manager这个函数,如果没有使用的话可能不会修改具体的数值。

具体使用方法:

From multiprocessing import Manager

manager = Manager()

l1 = manager.list()

p.apply_async(start_read,args=(l1,))//注意这块还有个逗号

time.sleep(0.5)

p.close()

p.join

由于我的start_read函数是一个死循环,因此需要强制停止:

p.terminate()

如果需要通过进程函数来修改列表的值,注意将列表作为参数传入到函数中,进行修改。

目前接触的就这么多,后续再进行补充。

猜你喜欢

转载自blog.csdn.net/dlfxjc2/article/details/70244977