首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不停止循环的情况下运行time.sleep()

如何在不停止循环的情况下运行time.sleep()
EN

Stack Overflow用户
提问于 2021-09-21 11:49:43
回答 3查看 1K关注 0票数 0

有没有一种方法可以在不干扰循环的情况下,从无限时间循环调用具有wait(time.sleep())的函数?我正在尝试运行几个需要等待几秒钟的任务,但问题是,在等待过程发生时,while循环也会停止。这就是我尝试过的--这是我的代码:

代码语言:javascript
复制
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()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-21 12:29:37

目前,您正在一个线程脚本中工作。您应该使用穿线多处理。这使得(看起来)多个进程处于活动状态。取决于您是否使用穿线多处理

票数 0
EN

Stack Overflow用户

发布于 2021-09-21 17:00:29

感谢来自@JLT和@TerePiim的快速回复。以下是任何可能受益于此的人的更新代码:

代码语言:javascript
复制
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()
票数 1
EN

Stack Overflow用户

发布于 2021-09-21 12:09:05

你应该使用线程。这看起来就像电脑在同时做这两件事一样。

代码语言:javascript
复制
import threading

t = threading.Thread(target=function)
t.start()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69268398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档