python 进程编程速成

  python具有thread多线程库,但多线程并不是真正的多线程,不能充分利用多核CPU资源。

  在大多数情况下,python可以使用multiprocessing多进程库,可以轻松完成从单进程到并发执行的转换。

  multiprocessing库支持子进程、通信和共享数据、执行不同形式的同步,提供Process、Queue、Pipe、Lock等类对象。

一、Process类对象,创建进程

  在multiprocessing中,每一个进程都用一个Process类来表示。

Process([group [, target [, name [, args [, kwargs]]]]])

参数:
group分组,实际上不使用
target表示调用对象,你可以传入方法的名字
name是别名,相当于给这个进程取一个名字
args表示被调用对象的位置参数元组,比如target是函数a,他有两个参数m,n,那么args就传入(m, n)即可
kwargs表示调用对象的字典

   示例1:

import multiprocessing
 
def process(num):
    print 'Process:', num
 
if __name__ == '__main__':
    for i in range(5):
        p = multiprocessing.Process(target=process, args=(i,))
        p.start()

 备注:

  multiprocessing.Process():创建进程

  target:传入函数名(方法)

  args:传入函数或方法的位置参数元组

  P.start()方法用于启动进程

  

  示例2:

import multiprocessing
import time
 
def process(num):
    time.sleep(num)
    print 'Process:', num
 
if __name__ == '__main__':
    for i in range(5):
        p = multiprocessing.Process(target=process, args=(i,))
        p.start()
 
    print('CPU number:' + str(multiprocessing.cpu_count()))
    for p in multiprocessing.active_children():
        print('Child process name: ' + p.name + ' id: ' + str(p.pid))
 
    print('Process Ended')

备注:

  m.cpu_count():获取当前机器的CPU核心数量

  m.active_children():目前所运行的进程对象列表

posted on 2017-10-12 12:23  萧飞IDO  阅读(271)  评论(0编辑  收藏  举报

导航