многопоточное приложение python для извлечения сообщений из rabbitmq - PullRequest
0 голосов
/ 26 ноября 2018

Worker.counter = 0 confobj.thread_count = 2

def callback(ch, method, properties, body):
    if(Worker.counter<confobj.thread_count):
      logObject = json.loads(body)
      th=Worker(Worker.counter+1,logObject,confobj,fileobj)
      Worker.counter+=1
      th.start()
    else:
      print("All threads are busy.") 
      time.sleep(2)  
    ch.basic_ack(delivery_tag = method.delivery_tag)

  channel.basic_qos(prefetch_count=1)
  channel.basic_consume(callback,
                        queu`enter code here`e=confobj.queue)
  channel.start_consuming()

Я хочу, чтобы maxthread был равен 2 таким, чтобы к первому сообщению обращался первый поток, ко второму сообщению - второй поток, третьему сообщению - первый поток сноваИ так далее. Затем я хочу вставить эти сообщения в упругий поиск, не пропуская ни одного из сообщений.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018
from multiprocessing import Process, current_process


def square(x):
print(x*x)
print('processID =', current_process())
return x * x


def cube(y):
print(y*y*y)
print('processID =', current_process())
return y * y * y


if __name__ == '__main__':
number = 6
one = Process(target=square, args=(number,))
two = Process(target=cube, args=(number,))

one.start()
two.start()

one.join()
two.join()

Вот простой пример использования Process с различными функциями.Поэтому вы можете вызвать .start () по идентификатору процесса.(Это не полный код. Это просто пример для понимания).

0 голосов
/ 26 ноября 2018

Вы можете попробовать использовать Process из Multiprocessing и вызвать функцию Process.pid, чтобы получить доступ к каждому идентификатору процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...