多工 協程

2021-08-21 04:09:10 字數 1744 閱讀 9588

**示例

import time

defwork1

():while

true:

print('正在掃地---')

yield

defwork2

():while

true:

print('正在搬磚---')

yield

w1 = work1()

w2 = work2()

# 協程肯定是併發執行

while

true:

next(w1)

next(w2)

greenlet第三方模組,手動的切換任務

greenlet().switch() 切換任務

**示例

import time

from greenlet import greenlet

deftest1

():while

true:

print("---a--")

gr2.switch()

time.sleep(0.5)

deftest2

():while

true:

print("---b--")

gr1.switch()

time.sleep(0.5)

gr1 = greenlet(test1)

gr2 = greenlet(test2)

#切換到gr1中執行

gr1.switch()

gevent基本使用

**示例

import gevent

import time

deffunc1

():while

true:

print('func1-----')

gevent.sleep(1) # gevent 的耗時操作,必須是 gevent自己的功能才能識別

deffunc2

():while

true:

print('func2----')

gevent.sleep(1)

g1 = gevent.spawn(func1)

g2 = gevent.spawn(func2)

# 主線程不會等待 gevent 任務結束

g1.join()

g2.join()

gevent高階使用

**示例

import gevent

import time

from gevent import monkey # 找來猴子

monkey.patch_all() # 使用猴子來打補丁,打補丁之後所有的耗時操作都會被替換為 gevent 的呼叫

deffunc1

():while

true:

print('func1-----')

time.sleep(1)

deffunc2

():while

true:

print('func2----')

time.sleep(1)

g1 = gevent.spawn(func1)

g2 = gevent.spawn(func2)

# 主線程不會等待 gevent 任務結束

g1.join()

g2.join()

多工18 協程

協程,又稱微執行緒,纖程。英文名coroutine。協程是python個中另外一種實現多工的方式,只不過比執行緒更小占用更小執行單元 理解為需要的資源 為啥說它是乙個執行單元,因為它自帶cpu上下文。這樣只要在合適的時機,我們可以把乙個協程 切換到另乙個協程。只要這個過程中儲存或恢復 cpu上下文那...

Python 多工 協程

高階程式設計技巧 學習筆記 1.1 同步 非同步 1.2 阻塞 非阻塞 2.1 什麼是協程?協程,又稱微執行緒。協程是 python 個中另外一種實現多工的方式,只不過比執行緒更小占用更小執行單元 理解為需要的資源 2.2 python中的協程大概經歷了如下三個階段 最初的生成器變形yield se...

多工非同步協程實現

usr bin env python coding utf 8 import random import time import asyncio async defeat name print s開始吃西瓜啦!name sleep time random.randint 1,3 在非同步協程中如果出...