Я импортировал pyads (Python lib общаться через библиотеку TwinCAT с TcAdsDll.dll. Я прочитал here, что эта библиотека имеет возможность многопоточного.Использование pyads библиотеки в нескольких процессах питона параллельно
Является ли это также возможно использовать библиотеку 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() в нескольких процессах не проливает ошибки. Я надеюсь, что кто-то скажет мне, получаю ли я те же данные в обоих процессах без конфликтов/приоритетов.
[Изменить:] Мы реализовали нашу систему путем многопроцессорной обработки и обмена данными между процессами, чтобы избежать необходимости подвергать синхронным проблемам. Это работает безупречно, но вводит некоторые потоки данных и накладные расходы на программирование.
Я не могу принять этот ответ на данный момент, потому что ответ, основанный на опыте, будет более практичным. Кстати, мне кажется противоречащим, что ADS отправит те же данные дважды в 2 процесса, которые работают на одном и том же ip-адресе. Разве вы не согласны с тем, что ip-адрес - это единственное, что позволяет системе TwinCAT различать устройства? –
PyAds - это всего лишь тонкая оболочка вокруг TcAds, которую я использую в .NET более 5 лет, если вы хотите получить ответ на основе опыта :) Возможно, вы можете узнать больше о TCP/IP, чтобы понять, как связь между клиент ADS и система TC работают и как система TC может различать несколько соединений, поступающих с одного и того же IP-адреса. Например, ответ здесь: http://stackoverflow.com/questions/3329641/how-do-multiple-clients-connect-simultaneous-to-one-port-say-80-on-a-server Если вы «все еще сомневаюсь, вы всегда можете написать какой-то прототип, чтобы доказать это. – stevenv
Спасибо, чувак, пожалуйста, поддержите мой вопрос, если считаете, что это достаточно хорошо. –