我有一个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
答案 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
等待进程完成工作并退出。
请记住首先启动您的流程,然后将它们加入另一个循环中,以避免它们按顺序运行。