如何在不暂停整个脚本的情况下“睡眠”python

时间:2017-11-14 06:55:58

标签: python python-3.x

我对python很新,我正在尝试制作一个基本的秒表脚本。我希望能够暂停秒表,但是等待显示下一个号码的time.sleep(1)代码会干扰键盘事件。顺便说一句,我正在使用python包'keyboard'来获取活动。我已经尝试过线程,但据我所知,我无法暂停其他线程。

这是我的代码:

import time, keyboard, sys

print('Stopwatch \n')
input('Press enter to start:')

def counter():
    stopwatch = 0
    while True:
        time.sleep(1)
        stopwatch += 1
        print(stopwatch)
        question()

def question():
    while True:
        if keyboard.is_pressed('p'):
            print('\nPaused')
            input('Press enter to resume:')
        if keyboard.is_pressed('s'):
            print('\nStopped')
            sys.exit()

counter()

我不一定需要question函数,但正在尝试查看是否可以让它工作。我可以将这两个功能结合起来。

1 个答案:

答案 0 :(得分:1)

我有一些好消息和一些坏消息。坏消息是,你不能按照你正在尝试的方式做你正在做的事情,这正是你现在面临的问题。 Python没有办法暂停一个函数的执行,它是全部或全部。你可以通过multiprocessingthreading来实现这一点,但是在你做好准备之前,你真的只是打开一堆蠕虫进入它。

好消息是你不需要做所有这些。你试图找到开始时间和结束时间之间的差异,对吧?让我们把它归结为基础并做到这一点。

import datetime

start = datetime.datetime.now()
input("Press enter to stop.")
stop = datetime.datetime.now()
result = (stop - start).total_seconds()

您可以通过等待其他操作(在while True循环中执行上述操作)来实现暂停,获取开始和停止之间的秒数差异并将其添加到运行总计中。