【python】python进程、线程、协程和什么时候使用

【python】python进程、线程、协程和什么时候使用

  • https://blog.csdn.net/bandaoyu/article/details/90583629

  • 总结:

    • 写入文件时,该用什么?
      同一时间,只能有一个进程,对文件进行写入操作。这是操作系统的设定。
      多进程写入文件: 由操作系统随机决定哪个进程来写入操作。
      因为这种决策是随机,完全无序的。所以写入文件时,会造成文件顺序的错乱。
      比如:一共十个进程,每个进程写十个字,写十个字算是一个完整的操作。一个字全是一个执行单元。
      那么一个进程可能写完十个字,也就是一个完整的操作后,由系统决定切换到另外一个进程。
      也可能一个进程1写三个字,系统就切换另外一个进程3来进行操作。进程3写了二个字,系统切换到进程5,继续写入。
      这样就造成了文件内容的错乱。一行内有进程1的三个字,进程3的两个字,进程5的字。
      解决办法:

      • 对写入操作 进行加锁
        就是说:对当前进行写入操作的进程锁定,直到该进程写完十个字,也就是一个完成的操作,后解除该进程的锁定,放它离开。切换到另外一个进程来操作。
        因为一次只能一个进程执行写入操作,而且必须执行完成完整的操作,才允许切换。所以不会造成文件内容的混乱。
        但是加锁一般会完造成程序的执行效率下降。而且,如果写入操作分散在整个代码的多处,
        总不能把整个代码都锁起来吧,这样岂不是又成单进程了么?
        所以:把写入操作抽象出来为单独的一个函数,这样对单独的一个函数加群,这样问题就不大了。
        更优雅的方法:使用multiprocessing的回调函数。
        1、把写入操作抽象为单独的一个函数
        2、把进程需要写入的内容,作为返回值返回
        3、使用回调函数写入进程返回内容。
    • url爬取时,该用什么?

    • 读取文件时,该用什么?
      读取超大的文本文件,使用多进程分块读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值