def runSimulation(numberOfCustomers, numberOfWaitingSeats, nextCustomerWaitTime, hairTrimTime): worldToShop = Channel() shopToBarber = Channel() barberToShop = Channel() shopToWorld = Channel() Par( barber(hairTrimTime, shopToBarber, barberToShop), shop(numberOfWaitingSeats, worldToShop, shopToBarber, barberToShop, shopToWorld), worldSink(shopToWorld), worldSource(numberOfCustomers, nextCustomerWaitTime, worldToShop) ).start()
def execute(processCount): n = 10000000 # 100 times fewer than C due to speed issues. delta = 1.0 / n startTime = time() sliceSize = n // processCount channels = [] @process def accumulator(): pi = 4.0 * delta * sum(channel.read() for channel in channels) elapseTime = time() - startTime out(__file__, pi, n, elapseTime, processCount) processes = [] for i in range(0, processCount): channel = Channel() channels.append(channel) @process def calculator(id): sum = 0.0 for i in range(1 + id * sliceSize, (id + 1) * sliceSize): x = (i - 0.5) * delta sum += 1.0 / (1.0 + x * x) channels[id].write(sum) processes.append(calculator(i)) processes.append(accumulator()) Par(*processes).start()
def execute(processCount): n = 1000000000 delta = 1.0 / n startTime = time() sliceSize = n // processCount channel = Channel() processes = [] for i in range(0, processCount): processes.append(calculator(channel, i, sliceSize, delta)) processes.append(accumulator(channel, n, delta, startTime, processCount)) Par(*processes).start()
def execute(processCount): n = 10000000 # 100 times fewer than C due to speed issues. delta = 1.0 / n startTime = time() sliceSize = n // processCount channel = Channel() processes = [ calculator(channel, i, sliceSize, delta) for i in range(0, processCount) ] processes.append(accumulator(channel, n, delta, startTime, processCount)) Par(*processes).start()