我目前有一个程序运行处理实时数据的算法,并且每小时运行一次函数,该函数基于新的历史数据优化算法的参数。
因为这是在单个线程中运行的,所以当优化器运行时,它会暂停实时数据处理算法,但这只需要大约一分钟的时间,所以没有问题。
然而,我想要极大地扩展优化器,它将真正增加运行时。所以我在考虑把它分成自己的程序。然后它将在自己的线程中运行,不会中断算法的执行。
为了将优化器的结果与算法共享,我想我会在每次运行优化器时将它们保存到一个文件中,然后算法可以定期读取该文件。
如何确保算法不会在优化器写入该文件的同时尝试读取该文件?操作系统文件系统已经不允许这样做了吗?
另外,有没有更好的方法在不同的程序之间共享变量?或者,将优化器拆分到同一个程序中的单独线程中会更好?如有任何建议,将不胜感激,谢谢!
发布于 2018-06-22 11:10:15
首先,要在程序之间共享变量,必须考虑使用命名管道。
如果你想使用命名管道之外的任何东西,可能只是一个普通的文件,你必须处理竞争条件,或者从文件中读取错误的数据,你必须实现一个锁机制,可能是一个锁文件,如果你要写到文件,你创建一个锁文件,读取文件的例程将检查锁文件的存在,如果锁文件存在,它不会从锁文件中读取,当写到文件的例程完成时,你可以删除它。
您还可以使用cluster
模块,您可以轻松地在两个进程(子进程和父进程)之间进行通信,而无需创建文件。
https://stackoverflow.com/questions/50979744
复制相似问题