我有一个不断轮询数据的python脚本。该脚本不断运行,永远不会停止。
脚本轮询来自首次运行脚本时传递给它的关键字轨道的数据。
在不停止脚本的情况下,从另一个python脚本更新此曲目的最佳方法是什么?
我能想到的唯一解决方案是将轨道存储在txt文件中,并检查设置计时器上文件的任何更新。看起来有点乱。
答案 0 :(得分:5)
将此设置文件封装在数据库中会更好。一个简单的SQLite DB文件就足够了 - SQLite内置了Python支持,因此不需要额外的工作。
数据库的优势在于您不会遇到部分写入文件等的竞争条件。"配置 - 添加"脚本使用事务添加关键字,而从DB读取的其他脚本只有在完成后才能看到它。请记住,不要在周期性脚本中始终打开数据库。每隔一段时间,打开它,阅读关键字并关闭它。
答案 1 :(得分:3)
轮询配置文件并不是很混乱,而是解决此问题的一种非常常见的解决方案。你应该选择它。
答案 2 :(得分:2)
答案 3 :(得分:1)
我同意存储在文件中的跟踪数据,然后使用signal module通知您的脚本新的跟踪数据已准备好被读取,将函数绑定到SIGUSR1,并且您已完成,没有风险部分书面文件。
在你的剧本中:
import signal
signal.signal(signal.SIGUSR1, read_track_data)
然后,(Linux方式,但将在Windows中大不相同)只是在更新跟踪数据文件后立即向您的脚本发送信号。
$kill -n 10 PID_OF_YOUR_SCRIPT
答案 4 :(得分:0)
您可以使用套接字传递两个脚本