รหัสต่อไปนี้เริ่มกระบวนการสามกระบวนการ โดยอยู่ในกลุ่มเพื่อรองรับการเรียกของผู้ปฏิบัติงาน 20 ครั้ง:
import multiprocessing
def worker(nr):
print(nr)
numbers = [i for i in range(20)]
if __name__ == '__main__':
multiprocessing.freeze_support()
pool = multiprocessing.Pool(processes=3)
results = pool.map(worker, numbers)
pool.close()
pool.join()
มีวิธีในการเริ่มต้นกระบวนการตามลำดับหรือไม่ (แทนที่จะให้กระบวนการเริ่มต้นทั้งหมดพร้อมกัน) โดยมีการหน่วงเวลาแทรกอยู่ระหว่างการเริ่มต้นแต่ละกระบวนการ
หากไม่ใช้ Pool
ฉันจะใช้ multiprocessing.Process(target=worker, args=(nr,)).start()
ในการวนซ้ำ โดยเริ่มต้นทีละรายการและแทรกการหน่วงเวลาตามต้องการ ฉันพบว่า Pool
มีประโยชน์อย่างยิ่ง (ร่วมกับการโทร map
) ดังนั้นฉันจึงยินดีที่จะเก็บไว้หากเป็นไปได้
Pool
ตามลำดับ (โดยมีการหน่วงเวลา 5 วินาที) จะช่วยแก้ปัญหาได้ - person WoJ   schedule 16.09.2015