场景:现在有两个程序,一个程序的运行需要依靠另一个程序的运算结果方可正常运行,如果集成到一个程序中,将造成代码臃肿、维护麻烦等一系列问题。两个程序均与时间有紧密的关系,精确度需要到毫秒级别(排除 time 本身的误差),现在第一个程序运算后得出一个时间,此时间作为第二个程序的输入。两个程序均设置 windll.winmm.timeBeginPeriod(1)。两个程序均使用 pyinstaller 打包。
疑问:其实这个问题从某个角度来说就是看 time 模块每次调用的时候是不是调用的 windows 系统时间。个人拙见!
问题:这种情况下,在同一台电脑上两个程序的时间能够达到毫秒级别精度同步,有哪位技术大牛能否给予技术解答,万分感谢。
1
cclin 2021-08-08 18:37:23 +08:00 via Android
这种需求考虑一下 ntp ?
|
2
vhysug01 2021-08-08 19:28:24 +08:00
进程间通信?
|
3
CEBBCAT 2021-08-08 20:27:26 +08:00 via Android 1
要不还是把架构贴一下,说不定 V 友能帮你解耦
|
4
yolee599 2021-08-08 22:09:32 +08:00 via Android
为啥要两个程序读时间,一个程序处理好把结果和时间戳一起带过去就行了
|
5
LeeReamond 2021-08-09 03:07:10 +08:00
我觉得不论如何读时间还是要靠 systemcall 完成的,即使以任何方式进行进程间通信,由于互相无法访问对方状态,无论如何也需要双方各获取一次时间才能计算两者之间的时间差。
|
6
dangyuluo 2021-08-09 14:37:51 +08:00 1
两个进程同步的定义是什么呢?这两个线程有可能都不在同一时间运行(不太了解 Windows 调度器不过应该不可能有什么黑科技)。我觉得你需要的是一种信号机制,而且你还得考虑进程 B 被唤醒的时候会立刻抢占 CPU 。如果非得精确到毫秒,我觉得你可能需要了解下实时系统?
|
7
killva4624 2021-08-09 19:44:02 +08:00
可以考虑用文件通信或者接口通信,能带上时间戳就行…
再苛刻一些就用内存通信吧。 |