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

一、多进程

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

电脑中:录屏、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个进程


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,306评论 0 10
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,709评论 4 16
  • 那天, 风吹动柳叶婉转了遇见。 路边, 清芬的季节应景的桥段。 纷繁, 淅沥的雨滴打湿的眸眼。 飘乱, 花叶的生衬...
    草木萦心阅读 3,486评论 2 8
  • 上周和华约好了本周见面,开始是周二,后来华有事调整到了周五(2.9)。 这一周过的,有点迷迷糊糊的,感觉每天都要放...
    心理咨询师萍阅读 1,670评论 5 3

友情链接更多精彩内容