是否可以同时处理代码而不是顺序处理

时间:2012-02-04 17:29:41

标签: python asynchronous

如果我有:

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在图片中

  

是否有可能对程序的实际控制进行分叉,因此如果某个特定事件的计算结果为true,则分支并运行其函数,而程序的其余部分将继续正常运行?如上图b所示。

在我的主'事件'循环中,我的条件很少是真的,但是当它出现时,我需要它去执行一个半长的任务。现在,它当然控制了程序,所以当条件A运行它的代码时,没有其他主要的,经常使用的事件能够被检查。

这可能吗?

1 个答案:

答案 0 :(得分:5)

查看multiprocessing

如果较长的任务是I / O绑定(而不是CPU),则还有一些其他解决方案,如事件驱动/异步库和threading。这些不提供实际的顺序代码执行,而是在I / O完成时执行其他代码。为了更好地理解选择多处理与共享内存模型(如线程),请阅读Python的GIL