我有一个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
在这里用于等到进程完成工作并退出。
请记住先启动您的进程,然后加入另一个循环以不顺序运行。