ฉันมีสคริปต์ powershell เพื่อทำการประมวลผลแบบแบตช์กับรูปภาพจำนวนมากและฉันต้องการทำการประมวลผลแบบขนาน ดูเหมือนว่า Powershell จะมีตัวเลือกการประมวลผลเบื้องหลังเช่น start-job, wait-job ฯลฯ แต่ทรัพยากรที่ดีเพียงอย่างเดียวที่ฉันพบสำหรับการทำงานคู่ขนานคือการเขียนข้อความของสคริปต์และเรียกใช้สิ่งเหล่านั้น ( PowerShell Multithreading )
ตามหลักการแล้วฉันต้องการบางสิ่งที่คล้ายกับ foreach แบบขนานใน. net 4
สิ่งที่ดูเหมือนจะไม่สวยเช่น:
foreach-parallel -threads 4 ($file in (Get-ChildItem $dir))
{
.. Do Work
}
บางทีฉันอาจจะดีกว่าแค่ทิ้งตัวลงไปที่ c # ...
(get-job $a).jobstateinfo.state;
receive-job (wait-job ($a = start-job { "heyo!" })); remove-job $a
หรือ$a = start-job { "heyo!" }; wait-job $a; receive-job $a; remove-job $a
โปรดทราบด้วยว่าหากคุณโทรไปreceive-job
ก่อนงานจะเสร็จคุณอาจไม่ได้อะไรเลย