Я пытаюсь найти способ сравнения между различными объектами (унаследованными от класса Thread) таким образом, чтобы сохранить parallilsm (обработка в реальном времени).Коммуникация и сравнение объектов в многопроцессорности python?
Каждый рабочий имеет три поля (сообщение, счет, n). Я обновляю Count
каждый раз. Предположим, что у меня три потока: workers
. Мне нужно сравнить на моем сервере на основе поля count
, как я могу сделать доступ и сравнить между Worker.count
каждого работника, таким образом, что я держу параллелизм
from Queue import Queue
from threading import Thread
import time
class Worker(Thread):
def __init__(self, message, n):
Thread.__init__(self)
self.message = message
self.count= 0
self.n = n
def run(self):
while True:
print(self.message)
self.count+=1
time.sleep(self.n)
class Comparator(Thread):
def __init__(self, message, n):
Thread.__init__(self)
self.message = message
self.n = n
def run(self):
while True:
max= max([x.count for x in threads]) # how can I access to other threads
print "max", max
time.sleep(self.n)
thread1 = Worker("Test-1", 1)
thread2 = Worker("Test-2", 3)
s = Comparator("Test-3", 2)
s.start()
s.join()
threads = [thread1, thread2]
for g in threads:
g.start()
for worker in threads:
# wait for workers
worker.join()
Примечание Использование общего объекта здесь не Хорошее решение для меня, используя Queue(), например, не то, что я хочу, мне нужно сделать сравнение на основе обновленного поля в объекте, который я обновляю на ходу (для простоты я использую max()).
Является ли это правильный способ сделать это? Говоря о лучших практиках здесь. – user3378649
Я не уверен, но если кто-то захочет прокомментировать это, я буду рад прочитать. –