当前位置: 首页 > 面试题库 >

在用户指定的时间内运行Python脚本

宗弘扬
2023-03-14
问题内容

我今天才开始学习Python。我一直在阅读Byte Python。现在,我有一个涉及时间的Python项目。我在Byte of
Python中找不到任何与时间有关的东西,所以我问你:

如何在用户指定的时间内运行块然后中断?

例如(用一些伪代码):

time = int(raw_input('Enter the amount of seconds you want to run this: '))
while there is still time left:
    #run this block

甚至更好:

import sys
time = sys.argv[1]
while there is still time left:
    #run this block

问题答案:

我建议生成另一个线程,使其成为守护程序线程,然后休眠直到您希望任务终止。例如:

from time import sleep
from threading import Thread

def some_task():
    while True:
        pass

t = Thread(target=some_task)  # run the some_task function in another
                              # thread
t.daemon = True               # Python will exit when the main thread
                              # exits, even if this thread is still
                              # running
t.start()

snooziness = int(raw_input('Enter the amount of seconds you want to run this: '))
sleep(snooziness)

# Since this is the end of the script, Python will now exit.  If we
# still had any other non-daemon threads running, we wouldn't exit.
# However, since our task is a daemon thread, Python will exit even if
# it's still going.

当所有非守护程序线程都退出时,Python解释器将关闭。因此,当您的主线程退出时,如果唯一正在运行的其他线程是您在单独的守护程序线程中运行的任务,则Python将会退出。如果您希望能够退出而无需担心手动导致退出并等待其停止,则这是在后台运行某些内容的便捷方法。

因此,换句话说,这种方法相对于sleep在for循环中使用的优势在于,在这种情况下,您必须以这样的方式对任务进行编码:将任务分解为离散的块,然后每隔一段时间检查一次时间是否到了。可能对您的目的而言很好,但是它可能会有问题,例如每个块是否花费大量时间,从而导致程序的运行时间远长于用户输入的时间,等等。取决于您正在编写的任务,但是我想我会提到这种方法,以防对您更好。



 类似资料:
  • 问题内容: 我想编写一个简单的python脚本来完成特定的工作。我花了一些时间从网站链接信息。 在正确的时间单击这些链接的最佳方法是什么?我是否需要计算当前电流与列表中的电流之间的时间间隔并睡眠一会儿? 我真的停留在这一点上,并欢迎任何可能有用的想法。 问题答案: 看一下Python的sched模块。

  • 我想在Jenkins运行一个脚本10小时。这可能吗?我的脚本长度大约是55分钟。我现在已经安排它每小时运行一次。所以它保持每小时运行一次。(永不停止!!) 但是有没有办法让它在指定的时间内运行,比如说10个小时,然后自动停止?我希望它指定这个55分钟的脚本应该连续运行多长时间,然后自动停止,而不是安排。 所以,如果我在上午8点开始构建,并说运行3小时,它应该一直运行到上午11点,然后停止。

  • 问题内容: 我有一个bash脚本(在CentOS 6.4下运行),可以启动90个 不同的 PHP脚本。 为了避免服务器超载,我使用&符号,它可以工作,但是 我的目标是始终同时运行5个脚本 有没有办法做到这一点? 问题答案: 这个问题弹出了几次,但我找不到合适的答案。我想现在我找到了一个很好的解决方案! 不幸的是,这不是标准发行版的一部分,但make是。它有一个开关可做并联。 man make(1)

  • 问题内容: 我的以下代码有问题: callBash.py: sleep.sh: 我希望10秒钟后打印“结束”。(我知道这是一个愚蠢的示例,我可以简单地在python中睡眠,但是这个简单的sleep.sh文件只是作为测试) 问题答案: 使sleep.sh可执行并添加到参数列表中(如先前答案中所建议)可以正常工作。根据搜索路径,您可能还需要添加或其他合适的路径。(即,更改为。) 如果bash脚本的第一

  • 问题内容: 我有一个 包含特定日期和时间 的 文本文件。 我希望能够 在该文件中指定的时间运行脚本。 您将如何实现?创建另一个在后台运行的脚本(有点像守护进程),并每秒检查当前时间是否与文件中的时间匹配?还有另一种方法吗?该机是 linux服务器,Debian wheezy。提前致谢 问题答案: 请看以下内容: 该代码行在特定时间执行“ ls -l”。这是在特定时间执行某些操作(在我的示例中为命令

  • 问题内容: 我正在尝试编写一个bash shell脚本,该脚本在用户定义的时间内消耗嵌入式设备上的大量RAM。不使用数组怎么办? 问题答案: 即使不支持传统的Bash数组,也仍然可以使用特定Shell中内置的命令来创建类似数组的变量。 以下示例脚本基于我在嵌入式Linux项目中使用BusyBox时执行的一些脚本。 BusyBox使用Almquist Shell (也称为A Shell,ash和sh