Python的threading和multiprocessing模块初探(2)

二、使用multiprocessing创建进程

1、三种创建方式

进程的创建方式跟线程完全一致,只不过要将threading.Thread换成multiprocessing.Process。multiprocessing模块尽力保持了与threading模块在方法名上的一致性,示例代码可参考上面线程部分的。这里只给出第一种使用函数的方式:

#!/usr/bin/Python
#-*-coding:utf-8-*-
import multiprocessing, time

def run():
    i = 0;
    while i<10000:
        print 'running';
        time.sleep(2);
        i += 1;

if __name__ == '__main__':
    p = multiprocessing.Process(target=run);
    p.start();
    #p.join();
    print p.pid;
    print 'master gone';

2、创建进程池

该模块还允许一次创建一组进程,然后再给他们分配任务。详细内容可参考手册,这部分研究不多,不敢乱写。

pool = multiprocessing.Pool(processes=4)
pool.apply_async(func, args...)

3、使用进程的好处

完全并行,无GIL的限制,可充分利用多cpu多核的环境;可以接受linux信号,后面将看到,这个功能非常好用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c7a55b5abc33828c108b33cc742d2a6f.html