0

我花了几个小时来解决其他问题,但无法找到解决问题的方法。

我有一个程序在某些事件中使用参数调用我的 python 脚本。基本上每次调用我的脚本时,我都需要将变量加一并将其保存到文件中。每次调用它时,我都尝试直接执行此操作(打开、递增一并保存文件),但由于有时调用速度有多快,我失去了精度。我试图弄清楚如何让脚本运行并计数,然后每 X 分钟将计数写入文件。我的文件写入部分工作得很好,我只需要有关如何跟上变量计数并每 X 分钟将其写入文件的帮助。

我尝试使用线程使用单个脚本执行此操作,但每次调用全局变量声明都会覆盖计数。感谢您提前提供帮助。

4

1 回答 1

1

我阅读了您的查询,并在互联网上对此进行了研究。在描述我的研究之前,我有几个疑问:

  1. 调用你的python脚本的主程序说callee.py也是一个python脚本吗?如果是,这个主脚本是你写的还是你有权限更改主脚本中的源代码?
  2. 您是否要求对 python 脚本的调用是异步的?

我问这个是因为如果主程序是您编写的 python 脚本,或者您可以对源代码进行一些更改并且对callee.py的调用不需要是异步的,那么您可以使用subprocess.call方法这将等待callee.py完成。在callee.py中,您将拥有您已经开发的打开文件更新计数保存到文件操作。由于呼叫本质上是同步的,因此您不必担心错过或不正确的计数。

但是,如果您的方法是主程序需要异步调用callee.py或者主程序是非 python 程序(exe),那么您将必须确保同步更新存储计数的文件。Stack Overflow 上已经询问了有关如何执行此操作的查询。此外,请参阅下面关于Python 中的跨平台文件锁定的链接,以获取有关如何锁定文件、更新文件然后释放锁定的更多信息。

只要在主程序中以异步方式多次执行脚本,这种方法就会起作用。

我希望这可以为您指明解决方案的方向

于 2013-07-22T06:40:03.710 回答