进程内的python多进程同步

acruukt9  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(221)

我试图使用python 3.9.2中的多处理库同时运行两个进程。我需要两个进程之间的同步,这样一旦进程启动,进程内部就需要同步。我已经编写了示例代码来解释我的目标:

from multiprocessing import Process

import time

def process_one():
    time.sleep(5)
    # ---- WAIT FOR PROCESS TWO TO CATCH UP
    # --- SYNCHRONIZE HERE
    print(time.time())

def process_two():
    time.sleep(10)
    # --- SYNCHRONIZE HERE
    print(time.time())

def main():
    first = Process(target=process_one).start()
    second = Process(target=process_two).start()

    first.join()
    second.join()

    print('Both completed at: ', time.time())

if __name__ == '__main__':
    main()

举个例子,我明白这一点 process_one()process_two() 同时开始。但是,在这些进程中,我需要在两个进程之间进行同步,以便 time.time() 在这两个进程中是相等的(以表明在这两个进程中存在同步)。
我已经搜索了所有的文档,最后只使用了 synchronizer = Barrier(2) ,通过 synchronizer 作为每个进程函数的参数,然后包括 synchronizer.wait() 在这两个进程函数中,我希望同步匹配。我已经使用自己的代码对此进行了测试,该代码要求同时从外部daq设备读取数据和从串行端口读取数据。串行端口初始化需要2秒钟,因此我需要daq设备读取等待2秒钟,但不需要硬编码 time.sleep(2) . 这个 synchronizer.wait() 这种方法不起作用。
有解决办法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题