首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨程序/线程共享变量的最佳方式?

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

Stack Overflow用户
提问于 2018-06-22 10:14:48
回答 1查看 31关注 0票数 0

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

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

然而,我想要极大地扩展优化器,它将真正增加运行时。所以我在考虑把它分成自己的程序。然后它将在自己的线程中运行,不会中断算法的执行。

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

如何确保算法不会在优化器写入该文件的同时尝试读取该文件?操作系统文件系统已经不允许这样做了吗?

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

EN

回答 1

Stack Overflow用户

发布于 2018-06-22 11:10:15

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

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

您还可以使用cluster模块,您可以轻松地在两个进程(子进程和父进程)之间进行通信,而无需创建文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50979744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档