python 學習第二十五天(協程)

2021-08-25 11:39:54 字數 1542 閱讀 7429

因為協程是乙個執行緒執行,那怎麼利用多核cpu呢?最簡單的方法是多程序+協程,既充分利用多核,又充分發揮協程的高效率,可獲得極高的效能。

import time

import queue

defconsumer

(name):

print("--->ready to eat baozi...")

while

true:

new_baozi = yield

print("[%s] is eating baozi %s" % (name,new_baozi))

#time.sleep(1)

defproducer

(): r = con.__next__()

r = con2.__next__()

n = 0

while

1: time.sleep(1)

print("\033[32;1m[producer]\033[0m is ****** baozi %s and %s" %(n,n+1) )

con.send(n)

con2.send(n+1)

n +=2

if __name__ == '__main__':

con = consumer("c1")

con2 = consumer("c2")

p = producer()

from greenlet import greenlet

deftest1

(): print(12)

gr2.switch()

print(34)

gr2.switch()

deftest2

(): print(56)

gr1.switch()

print(78)

gr1 = greenlet(test1)

gr2 = greenlet(test2)

gr1.switch()

import gevent

import requests,time

start=time.time()

deff

(url):

print('get: %s' % url)

resp =requests.get(url)

data = resp.text

print('%d bytes received from %s.' % (len(data), url))

gevent.joinall([

gevent.spawn(f, ''),

gevent.spawn(f, ''),

gevent.spawn(f, ''),

gevent.spawn(f, ''),

])# f('')

## f('')

## f('')

## f('')

print("cost time:",time.time()-start)

第二十五天

程序 資源分配的最小單元 程序的組成 程式 資料和程序控制塊 pcb 所有的排程都是提前準備的 程序的經典三態 執行 就緒 等待 父程序的id ppid 啟動程序的使用者id uid 排程演算法 1.先來先服務 2.短程序優先 3.高優先順序優先 4.時間片輪轉法 一般都是用這個 先來先服務演算法的...

第二十五天

學會了final的相關使用方法 明天學習abstract關鍵字 一 final關鍵字 final關鍵字是最終的意思,使用final修飾類,代表該類不能被繼承。final修飾方法表示該方法不能被重寫。final修飾變數,代表該變數是常量 1 final方法 使用final修飾方法時,該方法不能被重寫,...

linuxC學習第二十五天

只說明部分 自動宣告變數,預設時編譯器預設是auto。請求編譯器盡可能的將變數存在cpu的內部暫存器中。通過這種方式可以盡可能的提高效率。要注意的是,內部暫存器有限,不能全部放入暫存器中,因此只是盡可能的存放cpu的內部暫存器中 修飾靜態變數 全域性變數,區域性變數 靜態變數存放在記憶體的資料區 1...