欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python不讓函數(shù)等待,python 等待函數(shù)

python如何設計一個函數(shù),實現(xiàn)等待用戶輸入數(shù)字,超時則默認選擇,

很簡單,新建一個線程即可

都勻ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

import threading

def input_func( context ):

context[ 'data' ] = input( 'input:' )

context = { 'data' : 'default' }

t = threading.Thread( target = input_func ,args = ( context , ) )

t.start( )

t.join( 10 ) #等待10秒

print( context )

Python異步編程全攻略

如果你厭倦了多線程,不妨試試python的異步編程,再引入async, await關鍵字之后語法變得更加簡潔和直觀,又經(jīng)過幾年的生態(tài)發(fā)展,現(xiàn)在是一個很不錯的并發(fā)模型。

下面介紹一下python異步編程的方方面面。

因為GIL的存在,所以Python的多線程在CPU密集的任務下顯得無力,但是對于IO密集的任務,多線程還是足以發(fā)揮多線程的優(yōu)勢的,而異步也是為了應對IO密集的任務,所以兩者是一個可以相互替代的方案,因為設計的不同,理論上異步要比多線程快,因為異步的花銷更少, 因為不需要額外系統(tǒng)申請額外的內(nèi)存,而線程的創(chuàng)建跟系統(tǒng)有關,需要分配一定量的內(nèi)存,一般是幾兆,比如linux默認是8MB。

雖然異步很好,比如可以使用更少的內(nèi)存,比如更好地控制并發(fā)(也許你并不這么認為:))。但是由于async/await 語法的存在導致與之前的語法有些割裂,所以需要適配,需要付出額外的努力,再者就是生態(tài)遠遠沒有同步編程強大,比如很多庫還不支持異步,所以你需要一些額外的適配。

為了不給其他網(wǎng)站帶來困擾,這里首先在自己電腦啟動web服務用于測試,代碼很簡單。

本文所有依賴如下:

所有依賴可通過代碼倉庫的requirements.txt一次性安裝。

首先看一個錯誤的例子

輸出如下:

發(fā)現(xiàn)花費了3秒,不符合預期呀。。。。這是因為雖然用了協(xié)程,但是每個協(xié)程是串行的運行,也就是說后一個等前一個完成之后才開始,那么這樣的異步代碼并沒有并發(fā),所以我們需要讓這些協(xié)程并行起來

為了讓代碼變動的不是太多,所以這里用了一個笨辦法來等待所有任務完成, 之所以在main函數(shù)中等待是為了不讓ClientSession關閉, 如果你移除了main函數(shù)中的等待代碼會發(fā)現(xiàn)報告異常 RuntimeError: Session is closed ,而代碼里的解決方案非常的不優(yōu)雅,需要手動的等待,為了解決這個問題,我們再次改進代碼。

這里解決的方式是通過 asyncio.wait 方法等待一個協(xié)程列表,默認是等待所有協(xié)程結(jié)束后返回,會返回一個完成(done)列表,以及一個待辦(pending)列表。

如果我們不想要協(xié)程對象而是結(jié)果,那么我們可以使用 asyncio.gather

結(jié)果輸出如下:

通過 asyncio.ensure_future 我們就能創(chuàng)建一個協(xié)程,跟調(diào)用一個函數(shù)差別不大,為了等待所有任務完成之后退出,我們需要使用 asyncio.wait 等方法來等待,如果只想要協(xié)程輸出的結(jié)果,我們可以使用 asyncio.gather 來獲取結(jié)果。

雖然前面能夠隨心所欲的創(chuàng)建協(xié)程,但是就像多線程一樣,我們也需要處理協(xié)程之間的同步問題,為了保持語法及使用情況的一致,多線程中用到的同步功能,asyncio中基本也能找到, 并且用法基本一致,不一致的地方主要是需要用異步的關鍵字,比如 async with/ await 等

通過鎖讓并發(fā)慢下來,讓協(xié)程一個一個的運行。

輸出如下:

通過觀察很容易發(fā)現(xiàn),并發(fā)的速度因為鎖而慢下來了,因為每次只有一個協(xié)程能獲得鎖,所以并發(fā)變成了串行。

通過事件來通知特定的協(xié)程開始工作,假設有一個任務是根據(jù)http響應結(jié)果選擇是否激活。

輸出如下:

可以看到事件(Event)等待者都是在得到響應內(nèi)容之后輸出,并且事件(Event)可以是多個協(xié)程同時等待。

上面的事件雖然很棒,能夠在不同的協(xié)程之間同步狀態(tài),并且也能夠一次性同步所有的等待協(xié)程,但是還不夠精細化,比如想通知指定數(shù)量的等待協(xié)程,這個時候Event就無能為力了,所以同步原語中出現(xiàn)了Condition。

輸出如下:

可以看到,前面兩個等待的協(xié)程是在同一時刻完成,而不是全部等待完成。

通過創(chuàng)建協(xié)程的數(shù)量來控制并發(fā)并不是非常優(yōu)雅的方式,所以可以通過信號量的方式來控制并發(fā)。

輸出如下:

可以發(fā)現(xiàn),雖然同時創(chuàng)建了三個協(xié)程,但是同一時刻只有兩個協(xié)程工作,而另外一個協(xié)程需要等待一個協(xié)程讓出信號量才能運行。

無論是協(xié)程還是線程,任務之間的狀態(tài)同步還是很重要的,所以有了應對各種同步機制的同步原語,因為要保證一個資源同一個時刻只能一個任務訪問,所以引入了鎖,又因為需要一個任務等待另一個任務,或者多個任務等待某個任務,因此引入了事件(Event),但是為了更精細的控制通知的程度,所以又引入了條件(Condition), 通過條件可以控制一次通知多少的任務。

有時候的并發(fā)需求是通過一個變量控制并發(fā)任務的并發(fā)數(shù)而不是通過創(chuàng)建協(xié)程的數(shù)量來控制并發(fā),所以引入了信號量(Semaphore),這樣就可以在創(chuàng)建的協(xié)程數(shù)遠遠大于并發(fā)數(shù)的情況下讓協(xié)程在指定的并發(fā)量情況下并發(fā)。

不得不承認異步編程相比起同步編程的生態(tài)要小的很多,所以不可能完全異步編程,因此需要一種方式兼容。

多線程是為了兼容同步得代碼。

多進程是為了利用CPU多核的能力。

輸出如下:

可以看到總耗時1秒,說明所有的線程跟進程是同時運行的。

下面是本人使用過的一些異步庫,僅供參考

web框架

http客戶端

數(shù)據(jù)庫

ORM

雖然異步庫發(fā)展得還算不錯,但是中肯的說并沒有覆蓋方方面面。

雖然我鼓勵大家嘗試異步編程,但是本文的最后卻是讓大家謹慎的選擇開發(fā)環(huán)境,如果你覺得本文的并發(fā),同步,兼容多線程,多進程不值得一提,那么我十分推薦你嘗試以異步編程的方式開始一個新的項目,如果你對其中一些還有疑問或者你確定了要使用的依賴庫并且大多數(shù)是沒有異步庫替代的,那么我還是建議你直接按照自己擅長的同步編程開始。

異步編程雖然很不錯,不過,也許你并不需要。

python wait()函數(shù)問題

看了你發(fā)的函數(shù):

def Wait(self):

self._app.MainLoop()

看名字應該是啟動了阻塞循環(huán),去處理app的請求,這個就是需要一直運行的,因為一旦停止了,你的app請求就沒發(fā)處理了。

如果你需要啟動后再執(zhí)行的別的程序,可以使用多進程,把這個啟動放在別的進程里去執(zhí)行。

如果解決了您的問題請采納!

如果未解決請繼續(xù)追問

Python 中的sleep函數(shù)

在我的Python環(huán)境(Win7+Python2.7.9)下測試沒問題,是等待5秒后再輸出 m。

你的問題可能是被標準輸出流的緩沖區(qū)緩沖了,給 stdout 加一個 flush 就可以了:

from?time?import?sleep

from?sys?import?stdout

print?"s"

stdout.flush()

sleep(5)

print?"m"

python 如何封裝在某帶參數(shù)函數(shù)之后等待時間?

題主你好,

方法及相應代碼見截圖:

*.方法不只一種, 題主看看如果不合適請追問. 上面這種做法的好處是封裝的這個函數(shù)func可以帶任意多個位置參數(shù).? //就圖主的問題來看, *args就夠了, 如果func函數(shù)中還有關鍵字參數(shù),則還需要使用**argv.

-----

希望可以幫到題主, 歡迎追問

分享文章:Python不讓函數(shù)等待,python 等待函數(shù)
當前路徑:http://chinadenli.net/article36/hegpsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器做網(wǎng)站、標簽優(yōu)化、企業(yè)網(wǎng)站制作、微信小程序、手機網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營