Python知识整合(七)

本文介绍了Python的多项功能。包括序列化,即变量从内存变为可储存或传输的进程;多进程、多线程的使用及特点;分布式进程可分布到多台机器;正则表达式的匹配、切分、分组等操作;还介绍了电子邮件的发送和收取协议及Python实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 序列化:变量从内存中变成可储存或传输的进程

    • pickle.dump(s)(x)序列化成一个bytes(序列化后写入一个file-like Object)
    • pickle.load(s)
    • json.dump(s)(x)json.load(s)(x)是序列化为json或json反序列化
    • 具体用法请参考(python序列化)
  • 多进程:

    • multiprocessing提供一个Process类代表一个进程对象。创建时只需传入一个函数和参数,用start()启动,join()等待子进程结束后再向下进行
    • Pool()批量创建子进程,默认大小代表可以 同时跑的进程数
    • Subprocess模块可以启动一子进程然后控制其输入和输出,如果还需输入可用communicate()
    • 进程间通信通过QueuePipes等实现
    • 具体用法请参考(Python多进程)
  • 多线程:

    • threading模块中有个current_thread()函数,永远返回当前线程的实例
    • threading.Lock():try...finally确保锁一定会被释放
    • GIL锁实际上把所有县城的执行代码上锁,导致Python的多线程只能交替进行
    • 具体请参考Python多线程
  • ThreadLocal对象变量虽是全局变量,但每个线程只能读写自己线程的独立副本,解决了参数在一个线程中各个函数间互相传递的问题

  • 分布式进程:Process可分布到多台机器上,而Thread最多分布到同一台机器的多CPU上

    具体请参考(Python分布式进程)

  • 正则表达式:

    • re.math(r'正则',x):成功返回一个Match对象,失败返回None
    • 切分字符串:例re.split(r'\s+', 'a b c')=['a', 'b', 'c']
    • 分组:用()表示要提取的分组(group)
    • 贪婪匹配:默认为贪婪匹配,可以加?变为非贪婪匹配
    • 编译:先编译正则表达式,调用方法不用给出,提高效率
    • 具体请参考(Pyton正则表达式)
  • 电子邮件:

    • MUA->MTA(协议:SMTP->SMTP)
      MUA->MDA(协议:IMAP->POP)
    • SMTP发送邮件:
      • smtplib负责发送邮件
      • email 负责构建邮件
    • POP3收取邮件
      • poplib把邮件的原始文本下载到本地
      • email解析原始文本,还原为邮件对象
    • 具体请参考(Python电子邮件)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值