Python的线程与进程

本文介绍了Python的线程与进程,强调了它们的区别,如进程是资源分配的最小单位,线程是CPU调度的最小单位。接着详细讨论了线程池ThreadPoolExecutor的使用,包括简单使用、as_completed方法和map方法的应用。
摘要由CSDN通过智能技术生成

1. 线程与进程

进程是资源分配的最小单位,线程是CPU调度的最小单位。线程可以让应用程序并发的执行多个任务,线程之间方便共享资源,进程之间信息难以共享。

2. 线程与进程的区别

引用知乎大佬的比喻,进程=火车,线程=车厢:

  • 线程在进程下进行(单纯的车厢无法运行)
  • 一个进程可以包含多个线程(一辆火车可以有多个车厢)
  • 不同进程之间的资源不容易共享,而一个进程下不同线程之间的资源容易共享(一辆火车换到另一辆火车不方便,需要站点等;而一个车厢换到另外一个车厢方便许多)
  • 进程间不会相互影响,但是某个进程中的线程挂掉就有可能会影响整个进程(一节车厢起火可能会影响其他车厢,但是不会影响另一条轨道的火车)
  • 进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等她结束,才能使用这一块内存 - “互斥锁” (比如车厢的洗手间)
  • 进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多允许多少人进入,如果满了要再门口等,有人出来了才能进去)- “信息量”

3. ThreadPoolExecutor线程池

简单使用
from concurrent.futures import ThreadPoolExecutor
import time

# 参数times用来模拟网络请求的时间
def get_html(times):
    time.sleep(times)
    print("get page {}s finished".format(times))
    return times

executor = ThreadPoolExecutor(max_workers=2)
# 通过submit函数提交执行的函数到线程池中,submit函数立即返回,不阻塞
task1 = executor.submit(get_html, (3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值