2017-05-02 38 views
0

Ich habe eine main.py wo innerhalb der main() Ich mache 2 Dinge, die einige Zeit dauern, um zu laden, aber sie müssen getan werden, bevor ich nach Programm ausführen kann. Wie führe ich die 2 notwendigen Dinge gleichzeitig aus, um die Startgeschwindigkeit zu erhöhen?Python main() multi-threading

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 

Antwort

1

Ich bin nicht in der Lage, aufgrund von 50 Ruf Einschränkungen zu kommentieren.

Der interpretierte Code von Python ist single-threaded aufgrund Global Interpreter Lock (GIL), so dass Ihr Multi-Thread-Code als single-threaded ausgeführt wird.

Verwenden Sie multiprocessing Modul könnte dazu beitragen, dieses Problem zu umgehen, da Ihr Code nicht von GIL betroffen ist.

Sie können Ihre 1. und 2. Sache als Funktionen schreiben und

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 verwendet wird hier unter

etwas ähnliches verwenden, zu warten, bis Prozesse ihre Arbeit und Ausfahrt beenden.

Bitte denken Sie daran, Ihre Prozesse zuerst zu starten, dann verbinden Sie sie in einer anderen Schleife, damit sie nicht nacheinander ausgeführt werden.