是否有辦法從無限的while回圈中呼叫一個有wait(time.sleep())的函式而不干擾回圈? 我試圖運行一些需要等待幾秒鐘的任務,但問題是,當等待程序發生時,while回圈也會停止。 這就是我所嘗試的-- 以下是我的代碼:
import cv2
import time
def waiting()。
print("Inside function"/span>)
# 運行一些任務。
time.sleep(5)
print("Done sleeping")
def main()。
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow("Webcam"/span>, frame)
k = cv2.waitKey(10)
if k == 32: # 按下空格鍵,等待功能。
waiting()
elif k == 27: # Press ESC to stop code.
break: #按ESC鍵停止代碼。
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__"/span>:
main()
uj5u.com熱心網友回復:
你應該使用執行緒。它將看起來像計算機同時在做這兩件事。
import threading
t = threading.Thread(target=function)
t.start()
uj5u.com熱心網友回復:
你目前是在一個單執行緒腳本中作業。你應該使用執行緒或多處理。這使得(它看起來)多個行程(處于)活動狀態。取決于你是否使用執行緒或多行程。
uj5u.com熱心網友回復:
感謝@JLT和@TerePiim的快速回復。以下是更新后的代碼,供可能從中受益的人參考:
import cv2
import time
import執行緒
def waiting()。
print("Interior parallel function")
# 運行一些任務。
time.sleep(5)
print("Done sleeping")
def main()。
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow("Webcam"/span>, frame)
k = cv2.waitKey(10)
if k == 32: # 按下空格鍵,等待功能。
t = threading.Thread(target=waiting)
t.start()
elif k == 27: # 按ESC鍵停止代碼。
break: #按ESC鍵停止代碼。
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__"/span>:
main()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/332340.html
標籤:
