[Python] Umgang mit mehreren Aufruffehlern in ray.init

Umgebung

python

Fehler, der aufgetreten ist

(ignore_reinit_error=True), RuntimeError: Maybe you called ray.init twice by accident? This error can be suppressed by passing in 'ignore_reinit_error=True' or by calling 'ray.shutdown()' prior to 'ray.init()'.

Über ignore_reinit_error

ignore_reinit_error kann entscheiden, ob __error __ ausgegeben werden soll, wenn __ray.init () __ mehrmals __ ausgeführt wird.

Der Standardwert __ ist False.

Beispiel

Nehmen Sie die folgende Programmierung als Beispiel.

Beispiel 1: Beispiel für die Änderung von ignore_reinit_error in __ False </ font> __. Das heißt, es bleibt ray.init (num_cpus = 1).

python


import time
import ray


if __name__ == "__main__":
    
    for i in range(2):
        ray.init(num_cpus=1)

        @ray.remote
        def time_function(num):
            time.sleep(1)
            return num

        time.sleep(2)

        start_time = time.time()

        numbers = ray.get([time_function.remote(i) for i in range(5)])

        end_time = time.time()
        duration = end_time-start_time

        print('numbers = {}, duration = {}'.format(numbers, duration))

#RuntimeError: Maybe you called ray.init twice by accident? This error can be suppressed by passing in 'ignore_reinit_error=True' or by calling 'ray.shutdown()' prior to 'ray.init()'.                      

In Beispiel 1 oben wurde ray.init ___2 Mal ausgeführt, sodass __Fehler __ aufgetreten ist.

Beispiel 2: Beispiel für die Änderung von ignore_reinit_error in __ True </ font> __. Das heißt, ray.init (num_cpus = 1, ignore_reinit_error = True).

python


import time
import ray


if __name__ == "__main__":
    
    for i in range(2):
        ray.init(num_cpus=1, ignore_reinit_error=True)

        @ray.remote
        def time_function(num):
            time.sleep(1)
            return num

        time.sleep(2)

        start_time = time.time()

        numbers = ray.get([time_function.remote(i) for i in range(5)])

        end_time = time.time()
        duration = end_time-start_time

        print('numbers = {}, duration = {}'.format(numbers, duration))

#numbers = [0, 1, 2, 3, 4], duration = 5.047511100769043
Calling ray.init() again after it has already been called.
numbers = [0, 1, 2, 3, 4], duration = 5.015073537826538                    

In Beispiel 2 wurde ray.init ___2 Mal ausgeführt, es ist jedoch kein __ Fehler __ aufgetreten.

Das Obige ist die Operation von ignore_reinit_error.

Recommended Posts