搜尋

首頁  >  問答  >  主體

java - python的协程是什么?和多线程有啥区别吗?

这才刚刚学完多线程,最近在知乎https://zhuanlan.zhihu.com/p/...又看到协程这个概念,但是文章讲的我不明不白,而且前面只提到了协程相比多线程的三个优点,请问协程究竟是什么?他各有什么优缺点?

高洛峰高洛峰2766 天前612

全部回覆(4)我來回復

  • 巴扎黑

    巴扎黑2017-04-18 10:05:13

    協程類似線程, 但是線程是作業系統底層提供的,而協程是平台自己提供的。
    協程是基於線程的,一個協程庫底層還是使用的操作系統的線程來支持,然後這個庫自己完成任務調度的事情,而不依賴於系統的調度。
    協程的優點你貼的連結裡已經說了,但是缺點就是實作比較複雜,實際效能會低於直接使用執行緒。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:05:13

    協程其實就是函數呼叫,相比線程更為輕量級,詳情可以查看協程

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:05:13

    def 协程1():
        pass
    def 协程2():
        pass
    def 协程3():
        pass
    def 协程n():
        pass
    
    while 1:
        协程1()
        协程2()
        协程3()
        协程n()

    協程就是一個函數,然後死循環調用,
    以上就是協程的基本思想。沒什麼神秘的~
    需要配合非同步IO使用,避免阻塞~

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:05:13

    協程的概念2樓給出的連結解釋很詳細,另外可以了解下gevent。一個基於協程的庫。了解完這個相信會對協程有更好的理解

    回覆
    0
  • 取消回覆