2016-02-24 5 views
0

Вот что я пытаюсь достичь: существует длительный процесс, т. Е. Потребитель кролика. Когда он получает конкретное сообщение, он должен начать параллельный процесс, который что-то делает (независимо ... печатать, спать в течение минуты ...) и заканчивается. Тем временем основной процесс по-прежнему потребляет сообщения.Запустить процесс async - может/должен использовать asyncio?

Этого сценарий может быть упрощен к этому примеру:

import time 

@this_should_run_in_parallel 
def background_foo(): 
    for _ in range(3): 
     print('zxc') 
     time.sleep(1) 

for k in range(10): 
    print('abc') 
    if k == 5: 
     background_foo() 
    time.sleep(1) 

# for loop is printing abc 
# but once k == 5 the parallel function also start printing 
# for loop goes on 
# desired output 

abc 
abc 
abc 
abc 
abc 
zxc 
abc 
zxc 
abc 
zxc 
abc 
abc 
abc 

Является ли это что-то asyncio должно быть использовано для, или я должен придерживаться многопроцессорных/пронизывающих модулей?

+0

Что такое проблема с 'threading'? – Arman

+0

Если вы хотите, чтобы он выполнялся одновременно, то потоки или asyncio - это то, что вы хотите, учитывая ваш стиль выбора. Если вы хотите, чтобы он работал в _parallel_, тогда посмотрите на многопроцессорность – Will

+0

Как будет сказано, потоки будут давать вам одновременно, но только mutliprocessing даст вам параллель – Fredrik

ответ

Смежные вопросы