Python sleep()函數用法:線程睡眠

2021-03-02 小學生編程

位於 time 模塊中的 sleep(secs) 函數,可以實現令當前執行的線程暫停 secs 秒後再繼續執行。所謂暫停,即令當前線程進入阻塞狀態,當達到 sleep() 函數規定的時間後,再由阻塞狀態轉為就緒狀態,等待 CPU 調度。

sleep() 函數位於 time 模塊中,因此在使用前,需先引入 time 模塊。

sleep() 函數的語法規則如下所示:

time.sleep(secs)

其中,secs 參數用於指定暫停的秒數,

仍以前面章節創建的 thread 線程為例,下面程序演示了 sleep() 函數的用法:

import threadingimport timedef action(*add):    for arc in add:                time.sleep(0.1)                print(threading.current_thread().getName() +" "+ arc)my_tuple = ("http://c.biancheng.net/python/",\            "http://c.biancheng.net/shell/",\            "http://c.biancheng.net/java/")thread = threading.Thread(target = action,args =my_tuple)thread.start()for i in range(5):    print(threading.current_thread().getName())

程序執行結果為:

MainThread
MainThread
MainThread
MainThread
MainThread
Thread-1 http://c.biancheng.net/python/
Thread-1 http://c.biancheng.net/shell/
Thread-1 http://c.biancheng.net/java/

可以看到,和未使用 sleep() 函數的輸出結果相比,顯然主線程 MainThread 在前期獲得 CPU 資源的次數更多,因為 Thread-1 線程中調用了 sleep() 函數,在一定程序上會阻礙該線程獲得 CPU 調度。

相關焦點

  • 一日一技:向Python中添加延遲函數time.sleep()
    示例:在Python中使用sleep()函數請按照以下給出的步驟在您的python腳本中添加sleep()。函數我們可以在python 3.4及更高版本中使用asyncio.sleep。sleep()函數是time模塊的一部分。當我們要暫時執行代碼時,可以使用sleep()函數。 例如正在等待其他過程完成或文件上傳等。
  • Python協程:概念及其用法
    協程概念協程,又稱微線程,纖程,英文名Coroutine。協程的作用,是在執行函數A時,可以隨時中斷,去執行函數B,然後中斷繼續執行函數A(可以自由切換)。但這一過程並不是函數調用(沒有調用語句),這一整個過程看似像多線程,然而協程只有一個線程執行。
  • Python 實例:多線程
    最後的time.sleep(1)是因為這個過程太快了,所以休眠1秒以便於觀察。這是一種理所當然的順序操作方法,但理所當然的操作並不是最有效率的操作。這種方法完全就是線性操作,從列表中取出一個元素,就用函數處理一個元素。現在運行程序試試,執行命令:time python3 threadingOrderRun.py
  • Python多線程實戰
    點擊上方「Python人工智慧編程」,馬上關注目的:(1)了解python線程執行原理(2)掌握多線程編程與線程同步(3)了解線程池的使用1 線程基本概念1.1 線程是什麼?線程是指進程內的一個執行單元,也是進程內的可調度實體.
  • Python並發編程你真的會嗎?一文搞清後臺線程和線程睡眠
    上面就是咱們所編寫的代碼,咱們一起來分析一下,上面紅色方框中的代碼:td.daemon=True意思是將td線程設置為後臺線程,然後調用start()函數來啟動該線程,然後在for
  • Python 多線程入門,這一篇文章就夠了
    /usr/bin/python# -*- coding: utf-8 -*-import threading# 定義一個簡單的方法,用於多線程的執行體def action(number):  for i in range(number):    # 調用 threading 模塊的 current_thread() 函數來獲取當前線程
  • 理解Python中多線程
    p=2604(點擊尾部閱讀原文前往)雖然Python中由於GIL的機制致使多線程不能利用機器多核的特性,但是多線程對於我們理解並發模型以及底層操作非常有用。線程的有兩種使用方法,一種是在函數使用,一種是放在類中使用。
  • Linunx的sleep,usleep,select,nonasleep對比與應用
    , usleep, select, pselect, nanosleep;它們的精度不同,在不同的應用場景下需要不同的函數; 一、用法1.1 函數名: sleep頭文件:#include <unistd.h>  // 在gcc編譯器中,使用的頭文件因gcc版本的不同而不同功  能: 執行掛起指定的秒數語
  • python核心編程之多線程教程-threading
    多線程-threadingpython的thread模塊是比較底層的模塊,python的threading模塊是對thread做了一些包裝的,可以更加方便的被使用1.time.sleep(1)if __name__ == "__main__":for i in range(5):t = threading.Thread(target=saySorry)t.start() #啟動線程,即讓線程開始執行運行結果:說明可以明顯看出使用了多線程並發的操作
  • 最全面的Java多線程用法解析
    最全面的java多線程用法解析,如果你對Java的多線程機制並沒有深入的研究,那麼本文可以幫助你更透徹地理解Java多線程的原理以及使用方法。1.創建線程在Java中創建線程有兩種方法:使用Thread類和使用Runnable接口。在使用Runnable接口時需要建立一個Thread實例。
  • Python sorted函數及用法
    下面程序演示了 sorted() 函數的基本用法:a = [5,3,4,2,1]print(sorted(a))a = (5,4,3,1,2)print(sorted(a))a = {4:1,\ 5:2,\ 3:3,\ 2:6,\ 1:8}print(sorted(a.items
  • 這樣學 Python 多線程與進程(一)
    但是對於經常爬蟲網絡請求、下載圖片等 IO 密集型操作,多線程變的很實用,能在一定程度上提高程序運行的效率。在單線程程序中可能包含多個方法,運行程序後,默認是在一個主線程裡按順序運行。__name__))        return back    return new_func@exe_timedef func1():    time.sleep(1)    print('執行方法1')    time.sleep(2)@exe_timedef func2():
  • python之lambda函數使用
    lambda還可以寫成以下幾種方式:lambda X:None lambda *args: sum(args) lambda **kwargs: 1      以下實例可以幫我們更好的理解這一用法:import timetime.sleep
  • 揭秘Python並發編程——協程
    Python並發編程一直是進階當中不可跨越的一道坎,其中包括進程、線程、協程,今天我們就來聊一聊協程。協程的定義很簡單,從頭到尾只有一條任務線在進行,就像是你可以在煮雞蛋的時候背單詞,但無論是煮雞蛋還是背單詞,始終都是你一個人在進行任務,線程的概念稍有不同,是把一個人分成兩個人,一個在煮雞蛋,一個在背單詞,我們直接上代碼看一下:這是一段普通的代碼,我們分別讓不同的url睡眠不同的時間,總共是10s,看一下運行結果:然後,我們使用協程來執行這段代碼:
  • Python 進程、線程和協程實戰指北
    我們知道,input()函數用於從鍵盤接收輸入,time.sleep()函數可以令程序停止運行指定的時長。不過,在等待鍵盤輸入的時候,sleep()函數就無法計時,而在休眠的時候,input()函數就無法接收鍵盤輸入。不藉助於線程,我們無法同時做這兩件事情。如果使用線程技術的話,我們可以在主線程中接收鍵盤輸入,在子線程中啟動sleep()函數,一旦休眠結束,子線程就殺掉主線程,結束程序。
  • Python定時任務(上)
    那就是在一個死循環中,使用線程睡眠函數 sleep()。from datetime import datetimeimport time'''每個 10 秒列印當前時間。如果 timedTask() 函數之後還有些操作,我們還使用死循環 + 阻塞線程。這會使得 timedTask() 一直佔有 CPU 資源,導致後續操作無法執行。我建議謹重使用。
  • 線程的sleep方法和wait方法,你會區分了嗎
    1、sleep方法是Thread類的靜態方法;wait方法是Object的成員方法。它們都可以暫停執行線程,但是sleep方法沒有釋放鎖,而wait方法釋放了鎖。2、sleep(xxx)調用sleep(xxx)會讓當前線程暫停(又稱此為「睡眠或休眠」)執行指定的時間xxx毫秒,xxx越大等待時間越長,比如:sleep(1000)將暫停1000毫秒執行,此時將執行機會讓給其他線程,即把使用CPU的機會給其他線程,但該對象的鎖依然保持,所以休眠時間結束後會自動恢復,即該線程回到就緒狀態
  • 令人窒息的python騷操作
    本文用作記錄,在使用python過程中遇到的一些技巧,有些代碼是本人所寫,有些則是python內置函數,有些則取之網際網路。
  • Python異步IO實現全過程
    在異步IO較長的等待期間,函數會阻塞並在此期間允許其他函數運行。(函數會在它啟動到返回期間阻塞其他函數。)Async IO並不容易我曾聽說,「如果可能儘量使用異步IO,在必須的時候才使用線程」。實際上,構建持久穩定的多線程代碼可能很難而且容易出錯。異步IO避免了一些線程設計上可能遇到的潛在速度障礙。
  • python中int函數的其他用法
    泰山版初中信息技術第1冊python編程中出現了int函數,教材中int函數的作用是把輸入的字符型數字轉變成整數,其實int函數還有其他的用法