二十一 Python協程

2021-09-07 15:21:12 字數 1314 閱讀 2117

#greenlet模組

#協程

#協程相對於執行緒與程序,協程可以控制,執行緒程序不受到人為的控制

##greenlet 可以控制協程的執行與暫停,greenlet不具備自動切換程序的能力

##gevent 當遇到阻塞,gevent會自動切換,使cpu利用率達到將近100%

##greenlet

#使用#gr1=greenlet(target) 建立協程

#gr2=greenlet(target,gr1) 建立gr2協程,執行過後切換到gr1執行緒

#gr1.switch() 手動切換到gr1協程的方法

#匯入greenlet協程模組

from greenlet import greenlet

def test1():

print("12")

#切換到gr2協程

gr2.switch()

print("34")

def test2():

print("56")

#切換到gr1協程

gr1.switch()

if __name__ == '__main__':

#建立協程

gr1 = greenlet(test1)

gr2 = greenlet(test2)

#從主線程切換到gr1協程

gr1.switch()

print("78")

# genev  模組

#gevent    當遇到阻塞,gevent會自動切換,使cpu利用率達到將近100%

#gevent協程模組自動執行切換,減少了手動切換協程順序的麻煩

#使用#gevent.joinall([協程,協程1,協程2]) 將協程加入到協程列表

#gevent.spawn(target) 建立協程

#gevent.joinall([gevent.spawn(target1),gevent.spawn(target2)])# 結合一起

import gevent

def test1():

print(12)

print(34)

def test2():

print(56)

if __name__ == '__main__':

gevent.joinall([

gevent.spawn(test1),

gevent.spawn(test2)

])

python 學習筆記(二十一)

coding utf8 author liwei windows平台多程序匯入multiprocessing模組 from multiprocessing import process,queue from multiprocessing import pool import os,time,ran...

Python 二十一 LEGB規則

一 解釋 python在查詢 名稱 的時候,是按照legb規則查詢的,local enclosed global buitl in。local 指的是函式或者類方法的內部。enclosed 指的是巢狀函式 閉包 global 模組中的全域性變數。buitl in 指的是python為自己保留的特殊名...

python二十一 檔案操作

檔案處理流程 1.開啟檔案,得到檔案控制代碼並賦值給乙個變數 2.通過控制代碼對檔案進行操作 3.關閉檔案 r 檔案讀模式 f open undo r encoding utf 8 讀取檔案資料 data f.read print data 關閉檔案控制代碼 f.close 判斷檔案是否可讀 f.r...