如何运行time.sleep()而不停止while循环



是否有一种方法可以调用具有wait(time.sleep())的函数,而不会干扰循环?我试图运行一些需要等待几秒钟的任务,但问题是while循环在等待过程发生时也会停止。这是我试过的下面是我的代码:

import cv2
import time
def waiting():
print("Inside function")
# Running Some Tasks
time.sleep(5)
print("Done sleeping")

def main():
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow("Webcam", frame)
k = cv2.waitKey(10)
if k == 32:  # Press SPACEBAR for wait function
waiting()
elif k == 27:  # Press ESC to stop code
break
cap.release()
cv2.destroyAllWindows()

if __name__ == "__main__":
main()

感谢@JLT和@TerePiim的快速回复。下面是更新后的代码,供可能从中受益的人使用:

import cv2
import time
import threading

def waiting():
print("Inside parallel function")
# Running some Tasks
time.sleep(5)
print("Done sleeping")

def main():
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow("Webcam", frame)
k = cv2.waitKey(10)
if k == 32:  # Press SPACEBAR for wait function
t = threading.Thread(target=waiting)
t.start()
elif k == 27:  # Press ESC to stop code
break
cap.release()
cv2.destroyAllWindows()

if __name__ == "__main__":
main()

你正在一个单线程脚本工作。您应该使用线程或多处理。这使得(看起来)多个进程处于活动状态。这取决于你是使用线程还是多进程。

应该使用线程。这看起来就像计算机同时在做这两件事。

import threading
t = threading.Thread(target=function)
t.start()

最新更新