當我們啟動執行緒時,是否知道 SURE 將首先執行哪個執行緒,或者它是不可預測的?
我這樣說是因為square 總是先被呼叫,然后是 cube。
import threading
def print_cube(num):
# function to print cube of given num
print("Cube: {}".format(num * num * num))
def print_square(num):
# function to print square of given num
print("Square: {}".format(num * num))
if __name__ == "__main__":
# creating thread
cuadrado = threading.Thread(target=print_square, args=(10,))
cubo = threading.Thread(target=print_cube, args=(10,))
# starting thread 1
cuadrado.start()
# starting thread 2
cubo.start()
print("Done!")
我想了解 Threading.start() 方法
呼叫 Threading start() 的順序是否重要?
但是,如果我同時睡紗線,那么它是隨機順序
import threading
import time
def print_cube(num):
# function to print cube of given num
time.sleep(3)
print("Cube: {}".format(num * num * num))
def print_square(num):
# function to print square of given num
time.sleep(3)
print("Square: {}".format(num * num))
if __name__ == "__main__":
# creating thread
cuadrado = threading.Thread(target=print_square, args=(10,))
cubo = threading.Thread(target=print_cube, args=(10,))
# starting thread 1
cuadrado.start()
# starting thread 2
cubo.start()
# both threads completely executed
print("Done!")
uj5u.com熱心網友回復:
我想了解方法
Threading.start()
Pythonthreading.Thread物件與執行緒不同。執行緒是作業系統中的一個物件——與您的代碼分開。我喜歡將執行緒視為執行您的target功能的代理。
Python 類的目的是為各種不同作業系統的各種不同執行緒ThreadAPI提供與平臺無關的介面。Python 的一個特點是,在您呼叫它的方法之前,它實際上并不創建作業系統執行緒。就是這樣做的:它創建了底層的作業系統執行緒。 Threadstart()start()
呼叫執行緒的順序
start()重要嗎?
取決于你的意思。您的程式肯定總是在啟動cuadrado執行緒之前啟動cubo執行緒,但執行緒的全部意義在于提供一種在您的程式中實作并發的方法;而“并發”的意思是不同執行緒中發生的事情不需要以任何確定的順序發生。通過在不同的執行緒中呼叫print_cube()和print_square(),您實際上是在告訴 Python(和作業系統)您不在乎哪個先列印。
也許print_square()總是會在您的計算機上首先被呼叫。也許print_cube()總是會在別人的計算機上被首先呼叫。也許在第三臺計算機上哪一個首先出現是不可預測的。
聽起來有點混亂,但我們喜歡并發的原因是它給了作業系統和 Python 系統更多的自由,以最有效的順序完成事情。例如,如果一個執行緒正在等待某個網路資料包到達,則可以允許其他執行緒做一些有用的作業。只要“有用的作業”不需要其他執行緒正在等待的資料包,那是一件好事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/517051.html
上一篇:創建asyncioFuture并通過Queue將結果填充到其他執行緒不起作用
下一篇:比較python字典中的鍵和值
