Задать вопрос
HartX
@HartX
Студент, красавчик, плохой программист=)

Возможно ли запускать метод класса в многопроцессорности из этого же класса?

Сразу оговорюсь что с многопроцессорностью я работаю второй раз. У меня возникла такая проблема. Есть код, который необходимо запускать в разных процессах. Я понимаю, что я могу подняться на уровень выше и запускать инициализацию данного класса (создавать новый объект класса) и запускать его там. Но мне интересно можно ли запустить метод start в многопроцессорности в этом же классе. Я понимаю, что каждому процессу нужно будет своё место в памяти. Т.Е. каждый процесс обращается к своим ячейкам памяти и если у нас не будет сборки конструктора в каждом процессе, то ничего не заработает (поправьте если я не прав). Возможно ли сделать это так, чтобы оно работало? один из вариантов, который у меня был это вызывать конструктор заново при создании нового процесса типа:
process = list()
for thread in range(threads):
    __init__(self, program)
    process_object = Process(target=program.start, args=tuple())
    process_object.start()
    process.append(process_object)
for process in process:
    process.join()
for process in process:
    process.terminate()
)
Но что то мне напоминает, что это плохой тон и я даже не уверен, что так можно делать. Есть ещё способы? За любые советы буду благодарен. Код прилогаю.
class Prog(Concrete_Prog):
    def __init__(self, queue, range_='', threads=1):

        self.threads = threads
        self.range = range_
        self.factory = QueueFactory(DBS.DB_QUEUES, QUEUES.WORKER_QUEUE)
        self.getter = Browser()
        self.saver = MongoDBSaver(db_name=DBS.LIGHT,
                                  collection_name=COLLECTIONS.SAVE)

        self.program = Behavior(getter=self.getter,
                                       range=self.range,
                                       saver=self.saver,
                                       factory_queue=self.factory,
                                       threads=self.threads)
      

    def start(self):
        queue = self.factory.generate_queue()
        if queue.is_empty():
            self.generate_queue(queue, self.queue_generator)
        self.program.start
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы