pyads ( TwinCAT ライブラリを介して TcAdsDll.dll と通信するためのPython libをインポートしました。このライブラリにはマルチスレッド機能があることをここで読みました。
pyads ライブラリを競合することなく複数のプロセスで使用することもできますか?
競合を避けるために、マルチプロセッシングとキューを使用して ADS データを複数のプロセスに共有する pyads ラッパーを作成することを検討しましたが、実行するだけに比べてかなりの作業になります。
# 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() を実行するだけでは、エラーは発生しません。競合/優先順位付けなしで両方のプロセスで同じデータを受け取るかどうか、誰かが教えてくれることを願っています。
[編集:]同期の問題のリスクを回避するために、プロセス間でデータをマルチプロセッシングおよび共有することにより、システムを実装しました。これは問題なく動作しますが、データフローとプログラミングのオーバーヘッドが発生します。