线程池指令系统

线程池指令系统

线程等待(阻塞)

试一试

from threading import Thread
from time import sleep
from datetime import datetime
from random import randint


def download(name):
    print(f'{name}开始下载:{datetime.now()}')
    sleep(randint(2, 7))
    print(f'{name}下载结束:{datetime.now()}')


if __name__ == '__main__':
    t1 = Thread(target=download, args=('明日战纪',))
    t2 = Thread(target=download, args=('斗罗大陆',))
    t3 = Thread(target=download, args=('独行月球',))

    # 示例1: 三个电影都下载结束后打印"全部下载完成"
    # t1.start()
    # t2.start()
    # t3.start()
    #
    # # 1. 子线程对象.join()   -   阻塞当前线程直到指定子线程任务完成
    # t1.join()
    # t2.join()
    # t3.join()
    # print('==============全部下载完成!============')

    # 示例2:前两个电影都下载完成后才下载第三个电影
    t1.start()
    t2.start()

    t1.join()
    t2.join()

    t3.start()

多线程池

线程池 - 管理多个线程的工具

线程池工作原理:先创建指定个数的线程,然后添加多个任务(任务数量>线程数量),让线程池中的线程去执行添加的所有任务,直到所有任务都执行完(线程池中的每个线程可能会执行多个任务)。

from threading import Thread, current_thread
from time import sleep
from datetime import datetime
from random import randint
from concurrent.futures import ThreadPoolExecutor


def download(name):
    print(f'{name}开始下载:{datetime.now()}', current_thread())
    sleep(randint(2, 7))
    print(f'{name}下载结束:{datetime.now()}')


if __name__ == '__main__':
    # 方案1:直接使用多线程下载1000个电影
    num = 0
    for _ in range(10):
        ts = []
        for x in range(100):
            num += 1
            t = Thread(target=download, args=(f'电影{num}',))
            ts.append(t)
            t.start()
        for x in ts:
            x.join()

方案2:使用线程池下载1000个电影

  1. 创建线程池 - ThreadPoolExecutor(线程数最大值)
    pool = ThreadPoolExecutor(3)
  1. 添加任务
  1. 一次添加一个任务: submit(函数, 实参1, 实参2, 实参3,…)
    注意:实参的数量由前面的函数在调用的时候需要的实参来决定
pool.submit(download, '肖生克的救赎')
pool.submit(download, '霸王别姬')

2)同时添加多个任务: map(函数, 参数对应的序列)
注意:使用map添加多个任务的时候,任务对应的函数必须是有且只有一个参数的函数

pool.map(download, ['V字仇杀队', '恐怖游轮', '沉默的羔羊'])
  1. 关闭线程池
    线程池关闭后无法再添加新的任务,并且会阻塞当前线程等待整个线程池的任务都完成
pool.shutdown()

常见的指令操作

执行指令的工具: Windows - 命令提示符(cmd) 、Mac - 终端

  1. 运行python程序: - 运算程序的计算机必须先安装python环境
    win: python py文件路径
    mac: python3 py文件路径
  2. 进入文件夹: cd
    cd 文件夹相对路径、文件夹绝对路径
    注意:如果是windows操作系统,cd操作如果要跨盘需要先切盘,然后再cd
    切盘方法:C:、E:、D:
  3. 查看当前文件夹的内容
    win: dir
    Mac:ls
  4. 用指令创建虚拟环境
    第一步:找到一个用来放虚拟环境的文件夹
    第二步:通过cd指令进入到存放虚拟环境的文件夹中
    第三步:创建虚拟环境
    python -m venv 虚拟环境名
    python3 -m venv 虚拟环境名
    第四步:激活虚拟环境
    (mac) source 虚拟环境目录/bin/activate
    (windows) 虚拟环境目录\ Scripts\activate.bat
    第五步:退出虚拟环境
    deactivate
    5.常用pip指令(pip - Python包管理工具)
    pip list - 查看当前环境已经安装过的所有的第三方库
    pip install 第三方库名称 - 下载并且安装指定的第三方库
    pip install 第三方库名称 -i 镜像地址 - 在指定的镜像地址中下载安装
    pip install 第三方库名称==版本号 (也可以在后面继续加 -i 镜像地址)
    pip install 第三方库名称1 第三方库名称2…
    pip freeze > 依赖文件名 - 生成依赖文件
    pip install -r 依赖文件路径 - 批量安装
    pip uninstall 第三方库名称 - 卸载指定的第三方库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值