【Python3 笔记】Python3 进程和线程 多进程 多线程 ThreadLocal 异步I/O 分布式进程

本系列是学习 廖雪峰 Python3 教程 过程中记录的笔记,本篇文章记录 Python 中的进程和线程的相关内容,主要包括多进程、多线程的实现,ThreadLocal 的使用,以及对异步 I/O 和 分布式进程的介绍。

进程和线程

  • 线程是最小的执行单元,而进程由至少一个线程组成。
  • 如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间。
  • 多进程和多线程的程序涉及到同步、数据共享的问题,编写起来更复杂。

多进程

  • Unix/Linux/Mac 下,可以使用 fork() 调用实现多进程,multiprocessing 模块可实现跨平台的多进程;

  • 启动几个子进程,使用 Process 模块 Process(target=func, args=(,))

  • 启动大量子进程,用进程池 Pool 批量创建,chi.apply_async(func=func, args=(,)

  • 进程间通信是通过 QueuePipes 等实现的;

    """Process()创建子进程 记录子进程启动的时间戳"""
    import time
    from multiprocessing import Process
    
    def action(name):  # 待会两个进程要执行的任务↓
        content = name
        for i in range(3):  # 循环3次
            content += str(time.time()) + ' -> '
            time.sleep(0.2)  # 等待0.2s
        print(content)
    
    if __name__ == '__main__':  # 这行代码很重要,新建进程的时候都加上它!!
    
        jc1 = Process(target=action, args=('进程一 时间戳:',))  # 准备建立一个进程:multiprocessing.Process()
        jc2 = Process(target=action, args=('进程二 时间戳:',))  # 再准备建立一个新进程,这是基本格式记住←
    
        jc1.start()  # 将蓄势待发的jc1进程正式启动!!
        jc2.start()  # 同上...
    
        jc1.join()  # 等待进程jc1将任务执行完...
        jc2.join()  # ...
        print('来自主进程:jc1,jc2任务都已执行完毕')
    
        jc1.close(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值