码迷,mamicode.com
首页 > 系统相关 > 详细

(一)使用multiprocessing模块创造多进程

时间:2017-10-18 14:54:14      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:tmp   分享   进程间通讯   处理过程   cpu   art   爬虫   from   条件   

一、Intro:

1、爬虫开发中,实现多进程是十分重要的(多个任务同时进行)。

2、时间片轮转调度算法:所有进程轮流使用CPU,每个进程占用CPU的时间很短(100ms)。用户看来仿佛所有的进程在不间断运行。

3、进程->CPU分配资源的最小单位。

  线程->程序执行的最小单位。

  一个进程由多个线程组成。

4、父进程与子进程:子进程在处理过程中,只对父进程地址空间中的相关数据进行访问,可以保护父进程地址空间中与当前子进程执行任务无关的全部数据。

二、使用"multiprocessing"模块的‘‘Process"类创造多线程

 

技术分享

编译环境:python 2.7.1

IDE:pycharm

保存为技术分享

import os
from multiprocessing import Process

def run_proc(name):
    print Child process %s (%s) Running... % (name,os.getpid())

if __name__ == __main__:
    print parent process %s. % os.getpid()
    for i in range(5):
        p = Process(target=run_proc,args=(str(i),))
        print Process will start.
        p.start()
    p.join()
    print Process End

运行结果

parent process 1072.
Process will start.
Process will start.
Process will start.
Process will start.
Process will start.
Child process 0 (6676) Running...
Child process 1 (6752) Running...
Child process 2 (6864) Running...
Child process 4 (6768) Running...
Child process 3 (6580) Running...
Process End

Process finished with exit code 0

(1)定义run_proc函数,传递name参数并用os.getpid获得当前进程的进程号

if __name__ == ‘__main__‘:   如果在其他代码中调用本代码的函数,该if条件之后的代码将不会被执行,因为__name__ != ‘__main__‘

例如,在另一个文件tmp.py中调用run_proc函数:

import p17
p17.run_proc(1)
Child process 1 (7120) Running...

Process finished with exit code 0

当然也可以采用from...import...

from p17 import run_proc
run_proc(1)

(2)for i in range(5):  段
即在当前的父进程下,创建5个子进程。python官方手册对Process类给予了更加易懂的版本:
from multiprocessing import Process

def f(name):
    print hello, name

if __name__ == __main__:
    p = Process(target=f, args=(bob,))
    p.start()
    p.join()
Process类需要传递两个参数,target即在f所调用进程下 再创造一个子进程。args后接字符,用于子进程命名。start()方法和join()方法分别实现子进程的启动和激活进程间通讯。

 

下期预告:

(1)使用multiprocessing模块的pool类产生大量子进程

(2)使用Queue类和Pipe类实现进程间通信

(一)使用multiprocessing模块创造多进程

标签:tmp   分享   进程间通讯   处理过程   cpu   art   爬虫   from   条件   

原文地址:http://www.cnblogs.com/yitiaoluyu/p/7686371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!