Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #4
0
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()