跨程序/线程共享变量的最佳方式?



我目前有一个程序,它运行一个处理实时数据的算法,每小时运行一次函数,根据新的历史数据优化算法的参数。

由于这是在单个线程中运行的,因此当优化器运行时,它会暂停实时数据处理算法,但只需要大约一分钟,所以没问题。

但是,我想大大扩展优化器,这将真正增加运行时间。所以我正在考虑将其分离到它自己的程序中。然后它将在自己的线程中运行,并且不会中断算法的执行。

为了与算法共享优化器的结果,我想每次运行优化器时都会将它们保存到文件中,然后算法可以定期读取该文件。

如何确保算法不会在优化程序写入此文件的同时尝试读取此文件?操作系统是否已经不允许这样做?

另外,有没有更好的方法可以在不同程序之间共享变量?或者,也许最好将优化器拆分为同一程序中的单独线程?任何建议将不胜感激,谢谢!

首先要在程序之间共享变量,您必须考虑使用命名管道。

如果你想使用命名管道以外的任何东西,也许只是一个普通文件,你必须处理竞争条件或从文件中读取错误的数据,你必须实现一个锁定机制,也许是一个锁文件,如果你要写入文件,你创建一个锁定文件,读取文件的例程将检查锁文件是否存在, 如果锁定文件存在,它不会从中读取,当写入文件的例程完成后,您可以将其删除。

你也可以使用cluster模块,你可以很容易地在两个进程(子进程和父进程(之间进行通信,而无需创建文件。

最新更新