2017-05-02 7 views
0

私はmain.pyの中にロードするまでに時間がかかる2つのことをしていますが、プログラムで実行するには、前に実行する必要があります。起動速度を上げるために2つの必要なものを同時に実行するにはどうすればよいですか?Python main()マルチスレッド

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

評判制限のため、コメントできません。

Pythonの解釈コードはGlobal Interpreter Lock (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以下のようなものを使用することができますがプロセスは自分の仕事と終了を終えるまで待つためにここに使用されています。

最初にプロセスを開始してから、別のループでそれらを順番に実行しないようにしてください。