दिलचस्प पोस्ट
स्वतंत्र संघों और विदेशी कुंजी संघ क्या हैं? एंड्रॉइड में बैटरी स्तर और राज्य प्राप्त करें कोई समेकित नहीं के साथ पंक्तियों और स्तंभों को स्थानांतरित करें AngularJS – कैसे एक ngRepeat फिल्टर परिणाम संदर्भ प्राप्त करने के लिए आईफ़ोन: मैकिकिट पर दो बिंदुओं के बीच की रेखा कैसे खींचना है? पायथन में कोड रिपॉजिटरी के साथ काम करते समय संसाधनों के सापेक्ष पथ को कैसे संदर्भित करें क्या-व्यावहारिक-ब्रेड और गैर-बडी भंडार के बीच अंतर है? जांचें कि क्या पेज को फिर से लोड किया गया है या फिर जावास्क्रिप्ट में रीफ्रेश किया गया है दृश्य स्टूडियो में LinqPad .dump () एक्सटेंशन विधि का उपयोग कैसे करें? रेटिना प्रदर्शन का पता लगाएं एंड्रॉइड Uri.getPath () द्वारा असली पथ प्राप्त करें Sqlite स्ट्रिंग को तिथि में कनवर्ट करें क्लिक किए जाने पर HTML पाठ इनपुट के सभी पाठ को चुनना श्रोता को अनब्लेंड कैसे करें जो event.preventDefault () (jQuery का उपयोग कर रहा है) को बुला रहा है? <br /> उपयोग किए बिना सीएसएस से लाइन-ब्रेक कैसे दे सकता है?

पार्सल चला सकते हैं समानांतर में आदेश?

मेरे पास छवियों के एक समूह पर कुछ बैच प्रसंस्करण करने के लिए एक शक्तियां स्क्रिप्ट है और मैं कुछ समानांतर प्रसंस्करण करना चाहता हूं। पार्सहेल में कुछ पृष्ठभूमि प्रसंस्करण विकल्प जैसे कि प्रारंभ-नौकरी, प्रतीक्षा-नौकरी, आदि हैं, लेकिन समानांतर कार्य करने के लिए मैंने पाया कि एकमात्र अच्छा संसाधन एक स्क्रिप्ट का टेक्स्ट लिख रहा था और उन ( पावरशेफ मल्टीथ्रेडिंग ) चल रहा था।

आदर्श रूप में, मैं कुछ समान करना चाहता हूं जो 4 नेट में समानांतर होता है।

कुछ बहुत अच्छा लग रहा है जैसे:

foreach-parallel -threads 4 ($file in (Get-ChildItem $dir)) { .. Do Work } 

हो सकता है कि मैं सिर्फ सी # के लिए नीचे गिरने से बेहतर होगा …

वेब के समाधान से एकत्रित समाधान "पार्सल चला सकते हैं समानांतर में आदेश?"

आप पृष्ठभूमि नौकरियों का उपयोग करके पावरशेल 2 में समानांतर नौकरियों को निष्पादित कर सकते हैं। प्रारंभ-नौकरी और दूसरी नौकरी सीएमडीलेट देखें

 # Loop through the server list Get-Content "ServerList.txt" | %{ # Define what each job does $ScriptBlock = { param($pipelinePassIn) Test-Path "\\$pipelinePassIn\c`$\Something" Start-Sleep 60 } # Execute the jobs in parallel Start-Job $ScriptBlock -ArgumentList $_ } Get-Job # Wait for it all to complete While (Get-Job -State "Running") { Start-Sleep 10 } # Getting the information back from the jobs Get-Job | Receive-Job 

स्टीव टाउनसेंड का जवाब सिद्धांत में सही है, लेकिन अभ्यास में नहीं है @ लिकविद ने बताया। मेरा संशोधित कोड कार्य-संदर्भ बाधा को ध्यान में रखता है – डिफ़ॉल्ट रूप से यह अवरोध पार नहीं करता है! स्वत: $_ चर इस प्रकार लूप में इस्तेमाल किया जा सकता है, लेकिन सीधे स्क्रिप्ट ब्लॉक में इसका इस्तेमाल नहीं किया जा सकता क्योंकि यह नौकरी द्वारा बनाई गई एक अलग संदर्भ में है।

बच्चे के संदर्भ में मूल संदर्भ से चर को पारित करने के लिए, इसे भेजने और इसे प्राप्त करने के लिए स्क्रिप्ट ब्लॉक के अंदर param उपयोग करने के लिए Start-Job पर -ArgumentList पैरामीटर का उपयोग Start-Job

 cls # Send in two root directory names, one that exists and one that does not. # Should then get a "True" and a "False" result out the end. "temp", "foo" | %{ $ScriptBlock = { # accept the loop variable across the job-context barrier param($name) # Show the loop variable has made it through! Write-Host "[processing '$name' inside the job]" # Execute a command Test-Path "\$name" # Just wait for a bit... Start-Sleep 5 } # Show the loop variable here is correct Write-Host "processing $_..." # pass the loop variable across the job-context barrier Start-Job $ScriptBlock -ArgumentList $_ } # Wait for all to complete While (Get-Job -State "Running") { Start-Sleep 2 } # Display output from all jobs Get-Job | Receive-Job # Cleanup Remove-Job * 

(मैं आम तौर पर पावरशेले प्रलेखन के सबूतों को समर्थन देने के लिए संदर्भ प्रदान करना चाहता हूं लेकिन, हाय, मेरी खोज में बेकार हो गया है। अगर आपको पता चल जाए कि सन्दर्भ जुदाई कहाँ है, तो मुझे यहां बताने के लिए एक टिप्पणी पोस्ट करें!)

http://gallery.technet.microsoft.com/scriptcenter/Invoke-Async-Allows-you-to-83b0c9f0

मैंने एक ऐवोक-एसिंक बनाया है जो आपको एक ही समय में एकाधिक स्क्रिप्ट ब्लॉकों / सीएमडीलेट / फ़ंक्शन चलाने की अनुमति देता है। यह छोटी नौकरियों के लिए बहुत अच्छा है (100 से मशीनों के लिए सबनेट स्कैन या wmi क्वेरी) क्योंकि ओवर-जॉब के स्टार्टअप समय बनाम एक रनस्पेस बनाने के लिए ओवरहेड बहुत कठोर है इसका उपयोग इस तरह किया जा सकता है

स्क्रिप्टब्लॉक के साथ,

 $sb = [scriptblock] {param($system) gwmi win32_operatingsystem -ComputerName $system | select csname,caption} $servers = Get-Content servers.txt $rtn = Invoke-Async -Set $server -SetParam system -ScriptBlock $sb 

बस सीएमडीलेट / फ़ंक्शन

 $servers = Get-Content servers.txt $rtn = Invoke-Async -Set $servers -SetParam computername -Params @{count=1} -Cmdlet Test-Connection -ThreadCount 50 

पृष्ठभूमि की नौकरियां सेटअप करने के लिए महंगे हैं और पुन: प्रयोज्य नहीं हैं पावरशेफ एमवीपी ओसिन ग्रीन में पावरशेले बहु-थ्रेडिंग का एक अच्छा उदाहरण है http://www.nivot.org/2009/01/22/CTP3TheRunspaceFactoryAndPowerShellAccelerators.aspx

(10/25/2010 साइट नीचे है):

यहां डेटा लोड करने की दिनचर्या में उपयोग के लिए Iis Oisin स्क्रिप्ट का इस्तेमाल किया गया है:

http://rsdd.codeplex.com/SourceControl/changeset/view/a6cd657ea2be#Invoke-RSDDThreaded.ps1