Python main()多线程

时间:2017-05-02 14:43:20

标签: python multithreading main

我有一个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

1 个答案:

答案 0 :(得分:1)

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

由于Global Interpreter Lock (GIL),Python的解释代码是单线程的,因此您的多线程代码将作为单线程运行。

使用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等待进程完成工作并退出。

请记住首先启动您的流程,然后将它们加入另一个循环中,以避免它们按顺序运行。