当程序运行时,变量中的PC时间不应改变

2024-04-27 04:59:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想得到PC时间一次,然后它应该永远不会改变,只要程序正在处理。想象一下:

dynamic_pctime = strftime("%H:%M").replace(":", ";")

在10分钟内得到PC时间;以43为例。所以只要程序在运行,它就应该保持在10;43当我访问此变量时

如何节省时间,使其在程序运行时不会在程序内更改

示例:

dynamic_pctime = strftime("%H:%M").replace(":", ";")


ExamplePath = r"C:/Example/Example2"+str(static_pctime)+""

def worker(device):

if device is None:
 print ("Device not found")
 f = open(ExamplePath + "Devicelist.txt", "w")
 f.write("Device not found") + "\r\n")
 f.close()

if __name__ == '__main__':
    if os.path.exists(ExamplePath):
        print("")
    else:
        os.mkdir(ExamplePath)
        print("Path created")

所以我们创建一个文件夹,以时间11:11为例。因此,当工作者访问路径时,他会自动询问动态时间他存储了什么时间。并尝试将文件存储到文件夹中,以获得的时间为准,例如11:12,而不是11:11

所以每个工人得到不同的时间,并试图存储在一个文件夹不存在


Tags: 程序文件夹ifdevice时间notdynamicreplace
1条回答
网友
1楼 · 发布于 2024-04-27 04:59:25

在您的最新更新中,Python脚本似乎是由另一个“主”应用程序编写的。它可能暗示了改进整体架构的可能性。但如果不多了解“硕士”项目,就很难说了

如果是这样的话,就由那个“主”程序将时间传递给Python脚本

重要的一点是datetime.now()总是返回电流时间。将时间“冻结”的唯一方法是将值保存到某个地方。如果一切都在同一个进程中运行,那么它可能是一个变量。如果-就像在您的例子中-is跨越多个不同的进程,您可能需要将值保存到persisten存储(如纯文本)文件中。但这会带来竞争条件的风险(如果两个进程同时运行并希望创建同一个文件两次怎么办)。这是一种脆弱的做法。只有在绝对必要的情况下我才会这么做

更好的方法是让主应用程序单独处理这个问题,并将值作为参数传递给子进程

同样,由于主应用程序的细节缺失,我不得不进行有根据的猜测。这种猜测是主程序是执行其他进程的bash脚本(我可能错了)

因此,在Python脚本中,需要从CLI参数中读取值。这可以通过访问sys.argv来实现,但我强烈建议使用argparse。它只是稍微多了一点工作,但是更易于维护(而且它免费提供了一个 help参数):

from argparse import ArgumentParser

def parse_args():
    parser = ArgumentParser()
    parser.add_argument('starttime')
    return parser.parse_args()

cli_args = parse_args()
timestring = cli_args.starttime

接下来,“主”应用程序需要将此值传递到子脚本中:

#!/bin/bash

python3 mychildproc.py 11:11 &
python3 mychildproc.py 11:11 &
python3 mychildproc.py 11:11 &
python3 mychildproc.py 11:11 &
python3 mychildproc.py 11:11 &
python3 mychildproc.py 11:11 &

wait

相关问题 更多 >