Можно ли обрабатывать куски кода одновременно, а не последовательно - PullRequest
1 голос
/ 04 февраля 2012

Если у меня есть:

def EventCheck():

    if cond_1 == True:
        do small action

    if cond_2 == True:
         do small action

    if cond_3 == True:
         for i in range(20):
            do longer action multiple times

    if cond_4 == True:
        do small action

    if cond_5 == True:
        do small action


while true:
    eventCheck()

В моей теоретической программе нормальное управление потоком будет таким же, как на рис.a на картинке

Возможно ли преобразовать фактическое управление программой, чтобы, если конкретное событие оценивалось как истинное, оно переходило и выполнялосьего функция , в то время как остальная часть программы продолжает работать как обычно?Как и на рис. Б выше.

В моем основном цикле «событие» у меня есть условие, которое редко когда-либо выполняется, но когда оно есть, мне нужно, чтобы оно выполнило полудлинное задание.Прямо сейчас она, конечно, берет на себя управление программой, поэтому, пока условие А выполняет ее код, ни одно из других основных, часто используемых событий не может быть проверено.

Возможно ли это?

1 Ответ

5 голосов
/ 04 февраля 2012

Оформить многопроцессорность .

Если более длинная задача связана с вводом / выводом (вместо ЦП), существуют другие решения, такие как управляемые событиями / асинхронные библиотеки и многопоточность . Они не предлагают фактического последовательного выполнения кода, но вместо этого выполняют другой код во время выполнения ввода-вывода. Чтобы лучше понять выбор многопроцессорной и общей модели памяти, такой как многопоточность, прочтите статью GIL .

в Python.
...