在多个 python 进程中并行使用 pyads 库

Use pyads library in multiple python processes in parallel

我导入了 pyads(Python lib to communicate through the TwinCAT library with TcAdsDll.dll. I've read here 这个库有多线程能力。

是否也可以多进程使用pyads库不冲突?

为了避免冲突,我考虑过制作一个 pyads 包装器,它将 ADS 数据共享给具有多处理和队列的多个进程,但与仅执行相比,这将是相当多的工作:

# process1:
pyads.open_port()
self.adr = pyads.AmsAddr('192.168.2.11.1.1', 851)
data = pyads.read_by_name(adr, args)

在类似的过程中:

# process2:
pyads.open_port()
self.adr = pyads.AmsAddr('192.168.2.11.1.1', 851)
data = pyads.read_by_name(adr, args):

只是 运行 pyads.open_port() 在多个进程中不会抛出错误。我希望有人能告诉我如果没有 conflicts/prioritizing.

我是否会在两个进程中收到相同的数据

[编辑:]我们通过在进程之间进行多处理和共享数据来实现我们的系统,以避免不得不冒同步问题的风险。这工作完美,但引入了一些数据流和编程开销。

根据我在 pyads 源代码中看到的内容以及我对 TcAds dll 的了解,您应该可以让两个进程建立自己的连接。您可以有多个客户端同时连接到 TwinCAT 系统。 ADS 路由器将确保数据通信的正确同步。