Python main() multi-threading



我有一个main.py,其中main((我正在做2件事,这些事情需要一些时间来加载,但是在我可以通过程序运行之前,它们需要完成。如何同时运行两件事以提高启动速度?

def main():

   clf_path = os.path.join(script_dir,'classifier_v1.pickle')  ### 1st thing
   f = open(clf_path, 'rb')
   print 'Loading Classifier....'
   classifier = pickle.load(f)
   f.close()
   tmp_data = api_call()   ### 2nd thing

由于50个声誉限制,我无法发表评论。

Python的解释代码是由于全局解释器锁(GIL(而单线螺纹,因此您的多线程代码将作为单线螺纹运行。

使用multiprocessing模块可以帮助解决此问题,因为您的代码不会受到GIL的影响。

您可以将您的第一件和第二件事作为函数写,并使用类似于

的东西
if __name__ == '__main__':
    f = multiprocessing.Process(name='first', target=first_function)
    s = multiprocessing.Process(name='second', target=second_function)
    f.start()
    s.start()
    f.join()
    s.join()

join在这里用于等到进程完成工作并退出。

请记住先启动您的进程,然后加入另一个循环以不顺序运行。

相关内容

  • 没有找到相关文章

最新更新