以下是問題的第一部分的解決方案-如何并行運作程序,以便每個程序都等待前一個程序完成後開始處理任務。我沒有在這裡讨論消息傳遞方面,因為它對我來說有點模糊,并且可以根據問題陳述不同地實作。在這個例子中,我們建立并運作三個worker,它們通過簡單的時間延遲來模拟執行。代碼段應該儲存到一個可以從指令行運作的檔案中。在
我們首先導入所需的子產品:#!/usr/bin/env python3
import time
from multiprocessing import Process, Event
并實作一個WorkerQueue類。這個類使勞工保持正确的秩序,并負責開始和結束他們。從業人員之間的通信是使用事件實作的。每個worker都有其他的\u ready和readyEvent字段,它們相應地訓示前一個worker和目前worker的完成狀态。注意,如果隊列中隻有一個worker,那麼它的其他準備就緒和就緒是相同的。在
^{pr2}$
然後,我們通過繼承Process類來實作工作程序本身。注意,也可以使用threading代替multiprocessing。在本例中,唯一更改的是Worker父類,Thread而不是{}。在class Worker(Process):
def __init__(self, delay, name=None):
super().__init__(name=name)
self.delay = delay
self.other_ready = Event()
self.other_ready.set()
self.ready = Event()
self.stop = Event()
def run(self):