-n विकल्प के साथ doit चलाते समय, कार्य अन्य उप-कार्यों द्वारा file_dep बनाए जाने की प्रतीक्षा नहीं करता है। यहां एक साधारण कोड है जो इस मुद्दे को दिखाने का प्रयास करता है:

def task_pexample():

    yield {
        "name":"test1",
        "actions": ["sleep 5", "touch tmp.txt"],
        "targets":["tmp.txt"]
    }

    yield {
        "name":"test2",
        "file_dep":["tmp.txt"],
        "targets":["tmp2.txt"],
        "actions": ["cp tmp.txt tmp2.txt"],
    }

doit -s pexample बिना किसी समस्या के चलता है। हालाँकि, doit -n 2 -s pexample चलाते समय, यह दूसरे उप-कार्य को तुरंत शुरू कर देता है, पहले वाले के पूरा होने की प्रतीक्षा किए बिना। यह तब एक त्रुटि उत्पन्न करता है क्योंकि फ़ाइल मौजूद नहीं है।

मेरा प्रश्न यह है कि क्या समानांतर में चलते समय doit उप-कार्य में ऐसी निर्भरताओं की तलाश करता है या नहीं करता है?

0
tlamadon 30 मार्च 2020, 18:37

1 उत्तर

सबसे बढ़िया उत्तर

हाँ। doit समानांतर में क्रियान्वित करते समय निर्भरता की तलाश करता है।

आपके उदाहरण के साथ समस्या यह है कि आप -s/--single कमांड लाइन विकल्प का उपयोग कर रहे हैं। -s, doit को निर्भरताओं की अनदेखी करते हुए निर्दिष्ट कार्य को निष्पादित करने का निर्देश देता है।

-s को आपके कार्य के कोड को विकसित करते समय विशेष अवसरों पर उपयोग किया जाना चाहिए, मानक निष्पादन के दौरान उपयोग नहीं किया जाना चाहिए।

1
schettino72 31 मार्च 2020, 21:02