python - 2 цикла while true одновременно

Как одновременно запустить 2 связанных цикла while true? Первый цикл - отвечает за бота, а второй - за небольшую консоль, команды из которой должны влиять на первый цикл.


Ответы (1 шт):

Автор решения: vadim vaduxa
import multiprocessing, queue, time, random

def loop_1(q, e):
    while True:
        try:
            i = q.get_nowait()
        except queue.Empty:
            print(None)
        else:
            print(i)
            if i == 3:
                e.set()
                break
        time.sleep(random.randint(1, 20) / 10)

def loop_2(q, e):
    while True:
        q.put_nowait(random.randint(1, 5))
        if e.is_set():
            break
        time.sleep(random.randint(1, 20) / 10)
   
def main(q, e):
    multiprocessing.Process(target=loop_1, args=[q, e]).start()
    multiprocessing.Process(target=loop_2, args=[q, e]).start()

if __name__ == '__main__':
    q = multiprocessing.Queue()
    e = multiprocessing.Event()
    main(q, e)

out:

None
4
2
None
4
3

Process finished with exit code 0
→ Ссылка