python協程面試題(一)

2021-08-14 17:27:33 字數 1358 閱讀 4962

使用協程的概念,達到以下目的, 輸入a,b,c,d四個整數,列印(a+b)*(c+d)的值。假設a+b的過程是耗時1秒io操作。

"""

使用協程的概念,達到以下目的, 輸入a,b,c,d四個整數,列印(a+b)*(c+d)的值

"""import asyncio, os

from threading import current_thread

# 定義負責計算兩個數字的和的協程

async def

sum(a, b):

print("【%s-%s】coroutine start to do: %s + %s" % (os.getpid(), current_thread().getname(), a, b))

await asyncio.sleep(1) # 模擬耗時1秒的io操作,自動切換協程

r = int(a) + int(b)

print("【%s-%s】coroutine end for : %s + %s, result is %s" % (os.getpid(), current_thread().getname(), a, b, r))

return r

# 定義主函式

defmain

(a, b, c, d):

loop = asyncio.get_event_loop()

task = asyncio.gather(

sum(a, b),

sum(c, d)

)loop.run_until_complete(task)

r1, r2 = task.result()

r = r1 * r2

print("【%s-%s】%s * %s = %s" % (os.getpid(), current_thread().getname(), r1, r2, r))

loop.close()

if __name__ == '__main__':

main(1, 2, 3, 4)

列印過程和結果:

【23729-mainthread】coroutine start

todo: 1 + 2

【23729-mainthread】coroutine start

todo: 3 + 4

【23729-mainthread】coroutine end

for : 1 + 2, result is

3【23729-mainthread】coroutine end

for : 3 + 4, result is

7【23729-mainthread】3 * 7 = 21

攜程python面試題 python常見面試題

哈哈,終於知道為什麼寫部落格的好處,很多知識看完了感覺是明白,當別人問道你的時候,又表達的模模糊糊說不太清楚,今天來總結一下這些問題吧,希望對自己和別人有一些幫助。python 1,python中的記憶體機制 2,python中的元類是什麼,和為什麼要有元類 簡單理解將函式物件扔進來處理後返回乙個新...

Python面試題(一)

def extendlist val,list return list list1 extendlist 10 list2 extendlist 123,list3 extendlist a print list1 print list2 print list3 執行結果和解析過程 10,a 123...

python面試題(一)

整理了一些python面試可能遇到的題,提供給大家,希望能對大家有用!1.下面的 會輸出什麼?def extend list val,list return list list1 extend list 10 list2 extend list 123,list3 extend list a pri...