多线程、多进程

多线程&多进程

1,什么是进程
  • 一个正在运行的应用就是一个进程

  • 每一个进程均运行在其专用的且受保护的内存(运行内存)中

2,线程
2.1什么是线程
  • 线程定义

线程是进程执行任务的基本单元

进程要做什么事,干什么活都必须要有线程

  • 线程的特点 - 串行

要在一个线程中执行多个任务,任务串行执行(一个一个执行)

  • 多线程

默认情况下一个进程只有一个线程,多线程指一个进程中有多个线程

多线程执行不同任务可以并行(同时)执行

(* ̄(oo) ̄):多线程可以提高程序执行效率,但并不是越多越好。计算机一般应用程序不超过100个,爬虫200-300个。

  • 主线程、子线程

一个进程默认一个线程,该线程就是主线程。主线程外的线程都是子线程。

如果进程中需要子线程,只能自己创建(创建线程类,或者线程类的子类对象)

创建线程对象需要导入

from threading import Thread
2.2创建子线程

①创建线程对象,分配线程任务

t = Thread(*, target = 在线程中调用的函数, args)

target ---- 需要在子线程中调用函数,需要给一个普通函数的函数名

args ---- 在子线程中调用target对应的函数的时候,需要的参数对应的元组,如果需要一个实参,元组就给一个元素,以此类推

②启动线程:线程对线.start()

def download(name):
    print(f"{name}开始下载:{datetime.now()}")
    time.sleep(randint(1, 10))
    print(f"{name}下载完成:{datetime.now()}")


t1 = Thread(target=download, args=("a",))
t2 = Thread(target=download, args=("b",))
t3 = Thread(target=download, args=("c",))

t1.start()
t2.start()
t3.start()
2.3线程阻塞 - 等到某个线程的任务结束才接着执行
线程对象.join
3,多进程
  • 一个应用默认只有一个进程,为主进程

  • 一个程序可以有多个进程,主进程外的进程为子进程

  • 主进程以外的进程需要自己创建进程对象

def download(name):
    print(f"{name}开始下载:{datetime.now()}")
    time.sleep(randint(1, 10))
    print(f"{name}下载完成:{datetime.now()}")


# 如果想要使用多进程,必须在程序中添加下面的if语句
if __name__ == '__main__':

    # 1,创建进程对象
    p1 = Process(target=download, args=("aaa",))
    p2 = Process(target=download, args=("bbb",))
    p3 = Process(target=download, args=("ccc",))
    p4 = Process(target=download, args=("ddd",))

    p1.start()
    p2.start()
    p3.start()
    p4.start()

(* ̄(oo) ̄):如果想要使用多进程,必须在程序中添加下面的if语句

if __name__ == '__main__':
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值