首页 > 解决方案 > python:等到一个函数完成

问题描述

我的脚本由几个函数组成,这些函数在执行时间方面执行相对较长的 bash 命令(检索 suid 二进制文件列表、检索多个文件等)。

我已经链接了这些函数以通过多处理执行它们,如下所示:

def main_f():



   queue=Queue()





   proc10= multiprocessing.Process(target=verify_defenses)
   proc2 = multiprocessing.Process(target=useful_software)
   proc3 = multiprocessing.Process(target=process)
   proc4 = multiprocessing.Process(target=start_suid)

   proc6 =multiprocessing.Process(target=path)
   proc7 =multiprocessing.Process(target=writable_directories)
   proc8 =multiprocessing.Process(target=authorized_exec)
   proc9 =multiprocessing.Process(target=crontab)
   proc1 =multiprocessing.Process(target=enum_users)
   proc11 = multiprocessing.Process(target=network_interface)
   proc12 =multiprocessing.Process(target=check_write)
   proc13 = multiprocessing.Process(target=search_files)
      
   
   proc_tab = [proc1, proc2,.... ("speed" tasks)]

   for p in proc_tab:

      p.start()
      


   for p in proc_tab:

         
         

      p.join()

//"slow" tasks
proc4.start()
proc4.join()

proc_x.start()
proc_x.join(), etc

我的问题是多处理“执行”函数太快,以至于他们没有时间完成工作(例如,由于没有时间,返回 suid 的函数什么也不返回):我该怎么做才能让多处理等到我的函数在继续执行下一个函数之前已完成执行?

标签: pythonperformancetimemultiprocessing

解决方案


推荐阅读