专栏首页python-爬虫多进程与多线程的应用

多进程与多线程的应用

07.07自我总结

一.多进程的应用

1.多进程模块

multiprocessing

其中常用到的几个功能

Process用于定义进程

#定义进程有两种方式
from multiprocessing import Process
#第一种方式定义个方法
def func(aaa):
    pritn(123)
    
if __name__ == '__main__':
    process = Process(target=func,args=(123,))  #将target表现进程的任务名称 ,如果任务需要传参就加args   

注意:传参必须是集合的形式即使参数只有一个

#第二种定义个类
class Proce(Process): #用类的方法继承Process
    
    def run(self):               #run方法为任务执行的内容
        print('1')
if __name__ == '__main__':
    process = Proce()       
    
如果任务需要传参,
class Proce(Process):  # 用类的方法继承Process
    def __init__(self,data):
        super().__init__()
        self.data = data
    def run(self):  
        print(self.data)
if __name__ == '__main__':
    process = Proce(1111)

Lock:用于定义一个互斥锁

  • 定义锁

active_children:查看当前还在运行的自进程信息

cpu_count:查看cpu进程

2.进程的方法

  • is_alive():返回进程是否在运行。
  • join([timeout]):阻塞当前上下文环境的进程程,直到调用此方法的进程终止或到达指定的timeout(可选参数)。
  • start():进程准备就绪,等待CPU调度
  • run():strat()调用run方法,是主进程了运行了run而不是子进程
  • terminate():不管任务是否完成,立即停止工作进程

3.进程的属性

  • daemon:守护进程
  • exitcode(进程在运行时为None、如果为–N,表示被信号N结束)
  • name:进程名字。
  • pid:进程号。

4,进程的守护

使用了daemon

如果

实例化程序A.daemon = True 说明该进程守护主进程,当主进程结束了该子进程默认会跟着结束

如果不做处理deamon默认为False

5.子进程的运行在linux与windows中区别

在windows开启一个子进程他会把主程序自上而下重新运行一遍,所以我们在windows中必须把和子程序相关的丢入main里面中

在linux中只是会记录主程序的自上而下运行后最后的运行状态,而不会重新运行一遍,所以在linux中也不需要丢入main

综上所述还是将子进程丢入main里面运行更加合适

二.多线程的应用

1.多线程的模块

threading

其中常用到的几个功能

Thread:创建线程,方法与进程相同

Lock:互斥锁

  • lock = threading.Lock() 创建锁
  • lock.acquire()加锁
  • lock.release()解锁

RLock: 也是种互斥锁Lock允许在同一线程中被多次acquire。而Lock却不允许这种情况

active_count:存活的线程数量,返回的个数中包含主线程。

enumerate:方法返回当前运行中的Thread对象列表

2.线程的方法

与进程相似

  • is_alive():返回进程是否在运行。
  • join([timeout]):阻塞当前上下文环境的线程,直到调用此方法的进程终止或到达指定的timeout(可选参数)。
  • start():进程准备就绪,等待CPU调度
  • run():strat()调用run方法,是主线程了运行了run而不是子进程
  • terminate():不管任务是否完成,立即停止工作线程

3.线程的属性

与进程相似

  • daemon:守护线程
  • is_alive:是否存活
  • name:进程名字。
  • idend:线程号。

4.线程的守护

与进程相似

5.子线程的运行在linux与windows中区别

没有区别,都与进程在linux运行的方式一样

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux进程管理

    查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux,ps -ef,正常与grep连用

    小小咸鱼YwY
  • 进程池与线程池

    进程池:from concurrent.futuresimport ProcessPoolExecutor

    小小咸鱼YwY
  • html禁止相关css

    小小咸鱼YwY
  • Linux性能及调优指南(翻译)之Linux进程管理

    本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译 原文地址:http://www.re...

    小小科
  • 1.进程管理

    11、对进程的描述错误的是( d) A.进程是动态的概念 B.进程执行需要处理机 C.进程是有生命期的 D.进程是指令的集合

    见贤思齊
  • UNIX环境高级编程笔记之进程控制

      本章重点介绍了进程控制的几个函数:fork、exec族、_exit、wait和waitpid等,主要需要掌握的是父进程和子进程之间的运行机制,怎么处理进程的...

    CloudDeveloper
  • Linux笔记(10)| 进程概述

    父进程返回正整数,子进程返回0,在执行fork函数之前,操作系统只有一个进程,fork函数之前的,代码只会被执行一次,在执行fork函数之后,操作系统有两个几乎...

    飞哥
  • linux进程管理

    查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux,ps -ef,正常与grep连用

    小小咸鱼YwY
  • Linux 进程总结

    进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。...

    杰哥的IT之旅
  • 进程

    以前的计算机一次只能执行一个程序,后来有了多道程序设计的电脑,可以宏观上执行多个程序。由此产生了进程的概念

    用户5426759

扫码关注云+社区

领取腾讯云代金券