美文网首页
2017-5-22 python 爬虫之--多进程(自己测试用

2017-5-22 python 爬虫之--多进程(自己测试用

作者: 佐卡ww | 来源:发表于2018-07-25 18:00 被阅读0次

    一、多进程

    多任务:生活中来看,就是多个任务同时进行,喝酒聊天,开车,手脚并用,唱歌跳舞

    电脑中:录屏、sublime、vnc服务端、浏览器打开等

    代码中:实现多任务,多进程、多线程

    进程:电脑中,每一个软件启动起来都是一个进程,

    代码中:没有运行的时候称之为程序,运行起来之后就是一个进程

    多进程:进程只有一个,称之为主进程,子进程,要实现两个函数同时执行,就要通过主进程来创建子进程

    操作系统实现,只是在进程之间来回切换,切换的非常快,看着像同时执行一样

    代码实现?

    面向过程实现的时候:(process)

    p = Process(target=xxx, name=xxx, args=(xxx,))

    target: 进程启动之后要执行的函数

    name: 给进程起个名字

    args: 给子进程传递的参数,是一个元组

    p.start()  启动进程

    p.join()  让主进程等待子进程结束

    os.getpid() 获取当前进程id号

    os.getppid() 获取父进程的id号

    面向对象:

    见代码

    *****************************************************************************

    from multiprocessing import Process

    import time

    class SingProcess(Process):

    def __init__(self, a):

    # 如果要重写构造方法,一定得手动调用父类的构造方法

    super().__init__()

    self.a = a

    def run(self):

    print('传递的参数为%s' % self.a)

    for x in range(1, 5):

    print('我在唱小情歌')

    time.sleep(1)

    class DanceProcess(Process):

    def run(self):

    for x in range(1, 5):

    print('我在跳钢管舞')

    time.sleep(1)

    def main():

    a = '现在很多老歌手为什么不唱歌了'

    p_sing = SingProcess(a)

    # 启动进程,进程启动之后默认执行类里面的run方法

    p_sing.start()

    # p_dance = DanceProcess()

    # p_dance.start()

    p_sing.join()

    # p_dance.join()

    print('主进程结束')

    if __name__ == '__main__':

    main()

    *****************************************************************************************

    全局变量

    进程之间是否共享全局变量,不共享

    每一个进程都是单独的代码

    进程池

    多进程拷贝,拷贝文件夹,假如文件夹里面只有文件。假如有100个文件,那么拷贝的时候先拷贝第一个,然后第二个,然后第三个====

    拷贝一个文件就是一个任务,那一共100文件,那难道要开辟100个进程吗?

    进程并不是越多越好,切换占用的时间越大

    练习:多进程拷贝

    拷贝之前记录时间戳,拷贝之后记录时间戳,计算拷贝的时间

    多进程拷贝也是一样,哪个时间短

    引入进程池,规定能创建几个进程,来了任务,5个进程

    相关文章

      网友评论

          本文标题:2017-5-22 python 爬虫之--多进程(自己测试用

          本文链接:https://www.haomeiwen.com/subject/cikmmftx.html