मैं निम्नलिखित की तरह एक बहुत ही सरल Dask प्रोग्राम चलाने का प्रयास करता हूं:

# myfile.py
from dask.distributed import Client

client = Client()

लेकिन जब मैं इस प्रोग्राम को चलाता हूं, तो मुझे यह अजीब त्रुटि मिलती है

    An attempt has been made to start a new process before the
    current process has finished its bootstrapping phase.

    This probably means that you are not using fork to start your
    child processes and you have forgotten to use the proper idiom
    in the main module:

        if __name__ == '__main__':
            freeze_support()
            ...

    The "freeze_support()" line can be omitted if the program
    is not going to be frozen to produce an executable.
5
MRocklin 14 फरवरी 2020, 22:55

1 उत्तर

Client() या LocalCluster() को कॉल करते समय आप अपने प्रोग्राम में कुछ नई प्रक्रियाएं शुरू कर रहे हैं। जब मॉड्यूल या स्क्रिप्ट इस तरह की प्रक्रिया शुरू करते हैं तो पायथन इसे पसंद नहीं करता है।

समस्या का समाधान करने के लिए, अपने कोड को if __name__ == "__main__": ब्लॉक में निम्न की तरह शामिल करें:

# client = Client()

if __name__ == '__main__':
    client = Client()
    ...

वैकल्पिक रूप से आप सुरक्षित रूप से प्रक्रियाओं के बजाय थ्रेड्स का उपयोग करना चुन सकते हैं।

client = Client(processes=False)

साथ ही, यदि आप IPython या Jupyter जैसे इंटरैक्टिव सत्र में चलते हैं तो यह समस्या नहीं होगी

10
MRocklin 14 फरवरी 2020, 22:55
मुझे IPython 7.19.0 में OP जैसी ही समस्या दिखाई देती है, लेकिन यहां दिए गए समाधान इसे ठीक करते हैं
 – 
sappjw
3 पद 2020, 19:36