真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python中的協(xié)程是什么

本篇文章給大家分享的是有關(guān)Python中的協(xié)程是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比陵水黎族網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式陵水黎族網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋陵水黎族地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。

線(xiàn)程和進(jìn)程的操作是由程序觸發(fā)系統(tǒng)接口,最后的執(zhí)行者是系統(tǒng);協(xié)程的操作則是程序員。

協(xié)程存在的意義:對(duì)于多線(xiàn)程應(yīng)用,CPU通過(guò)切片的方式來(lái)切換線(xiàn)程間的執(zhí)行,線(xiàn)程切換時(shí)需要耗時(shí)(保存狀態(tài),下次繼續(xù))。協(xié)程,則只使用一個(gè)線(xiàn)程,在一個(gè)線(xiàn)程中規(guī)定某個(gè)代碼塊執(zhí)行順序。

協(xié)程的適用場(chǎng)景:當(dāng)程序中存在大量不需要CPU的操作時(shí)(IO),適用于協(xié)程;

event loop是協(xié)程執(zhí)行的控制點(diǎn), 如果你希望執(zhí)行協(xié)程, 就需要用到它們。

event loop提供了如下的特性:

注冊(cè)、執(zhí)行、取消延時(shí)調(diào)用(異步函數(shù))

創(chuàng)建用于通信的client和server協(xié)議(工具)

創(chuàng)建和別的程序通信的子進(jìn)程和協(xié)議(工具)

把函數(shù)調(diào)用送入線(xiàn)程池中

協(xié)程示例:

import asyncio
   
async def cor1():
    print("COR1 start")
    await cor2()
    print("COR1 end")
   
async def cor2():
    print("COR2")
   
loop = asyncio.get_event_loop()
loop.run_until_complete(cor1())
loop.close()

最后三行是重點(diǎn)。

asyncio.get_event_loop()  : asyncio啟動(dòng)默認(rèn)的event loop 

run_until_complete()  :  這個(gè)函數(shù)是阻塞執(zhí)行的,知道所有的異步函數(shù)執(zhí)行完成,

close()  :  關(guān)閉event loop。

1、greenlet

import greenlet
def fun1():
    print("12")
    gr2.switch()
    print("56")
    gr2.switch()
  
def fun2():
    print("34")
    gr1.switch()
    print("78")
  
  
gr1 = greenlet.greenlet(fun1)
gr2 = greenlet.greenlet(fun2)
gr1.switch()

2、gevent

gevent屬于第三方模塊需要下載安裝包

pip3 install --upgrade pip3
pip3 install gevent
import gevent
  
def fun1():
    print("www.baidu.com")   # 第一步
    gevent.sleep(0)
    print("end the baidu.com")  # 第三步
  
def fun2():
    print("www.zhihu.com")   # 第二步
    gevent.sleep(0)
    print("end th zhihu.com")  # 第四步
  
gevent.joinall([
    gevent.spawn(fun1),
    gevent.spawn(fun2),
])

遇到IO操作自動(dòng)切換:

import gevent
import requests
def func(url):
    print("get: %s"%url)
    gevent.sleep(0)
    date =requests.get(url)
    ret = date.text
    print(url,len(ret))
gevent.joinall([
    gevent.spawn(func, 'https://www.pythontab.com/'),
    gevent.spawn(func, 'https://www.yahoo.com/'),
    gevent.spawn(func, 'https://github.com/'),
])

以上就是Python中的協(xié)程是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:Python中的協(xié)程是什么
鏈接地址:http://weahome.cn/article/ggpoop.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部