क्या कई समांतर कार्यों के बीच मेजबान गतिशील रूप से संशोधित करने का कोई तरीका है? अभी तक मेरे पास इतना ही है।फैब्रिक लाइब्रेरी के साथ डायनामिक होस्ट और समांतर कार्य
def init_hosts():
env.hosts = [host1,host2,host3,host4]
@parallel
def task_1():
if condition is False:
env.hosts.remove(env.host)
@parallel
def task_2():
run('uname -s')
जाहिर है मैं करता है, जिन्हें task_1
में हालत को संतुष्ट पर चलने के लिए कुछ env
paramenters याद कर रहा हूँ, लेकिन मैं केवल चाहते task_2
। ऐसा लगता है कि task_2
की होस्ट सूची स्टार्टअप पर शुरू की गई है, क्योंकि यह init_hosts()
में परिभाषित प्रारंभिक env.hosts
सूची में सभी होस्टों पर चल रही है। मैंने गतिशील रूप से संशोधित और रोल्डेफ बनाने का भी प्रयास किया, लेकिन इसका एक ही परिणाम था।
संपादित करें: साथ ही, समानांतर निष्पादन कतार स्थापित करने का कोई तरीका है जैसे कि समानांतर में समानांतर में एकाधिक समानांतर कार्य निष्पादित किए जाते हैं?
संपादित करें: मैं प्रत्येक कार्य वापसी उत्पादन होने, और उत्पादन को पार्स एक नया मेजबान सूची बनाने के लिए के आधार पर अपने वांछित अंतिम परिणाम प्राप्त करने के लिए निष्पादित करने के लिए() पारित करने में कामयाब रहे:
def init_hosts():
env.hosts = [host1,host2,host3,host4]
@parallel
def task_1():
if condition is False:
return False
else:
return True
@parallel
def task_2():
run('uname -s')
def run_tests():
results = execute(task_1)
successful_hosts = [k for k in results.iterkeys() if results[k]]
execute(test_2, hosts=successful_hosts)
यह काम करता है, लेकिन यह है कई कारणों से सकल क्या कोई बेहतर तरीका है?