Discuss / Python / WIN10 可用的示例文件

WIN10 可用的示例文件

Topic source

freedempire

#1 Created at ... [Delete] [Delete and Lock User]

master.py

import queuefrom multiprocessing.managers import BaseManagertask_queue = queue.Queue()result_queue = queue.Queue()def get_task_queue():    return task_queuedef get_result_queue():    return result_queueclass QueueManager(BaseManager):    passif __name__ == '__main__':    # register tasks to network    QueueManager.register('get_task_queue', callable=get_task_queue)    QueueManager.register('get_result_queue', callable=get_result_queue)    # set port, authkey    manager = QueueManager(address=('127.0.0.1', 5000), authkey=b'123')    manager.start()    # get queue on network    task = manager.get_task_queue()    # get result on network    result = manager.get_result_queue()    for i in range(20):        print(f'Put task {i}')        task.put(i)    print('Try to get results...')    while True:        r = result.get(timeout=10)        print(f'Result "{r}"')        if r == 'done':            break    manager.shutdown()    print('Master exit.')

worker.py

import queue, timefrom multiprocessing.managers import BaseManagerclass QueueManager(BaseManager):    passif __name__ == '__main__':    # register tasks to network, only need name to get queue    QueueManager.register('get_task_queue')    QueueManager.register('get_result_queue')    server_addr = '127.0.0.1'    port = 5000    authkey = b'123'    print(f'Connect to server: {server_addr}@{port}...')    manager = QueueManager(address=(server_addr, port), authkey=authkey)    manager.connect()    # get queue on network    task = manager.get_task_queue()    # get result on network    result = manager.get_result_queue()    while True:        try:            n = task.get(timeout=1)            print(f'Run task {n} * {n}')            r = f'{n} * {n} = {n*n}'            result.put(r)            time.sleep(1)        except queue.Empty:            print('Task queue is empty.')            result.put('done')            break    print('Worker exit.')

freedempire

#2 Created at ... [Delete] [Delete and Lock User]
import queue, time
from multiprocessing.managers import BaseManager


class QueueManager(BaseManager):
    passif __name__ == '__main__':
    # register tasks to network, only need name to get queue
    QueueManager.register('get_task_queue')
    QueueManager.register('get_result_queue')
    server_addr = '127.0.0.1'
    port = 5000
    authkey = b'123'
    print(f'Connect to server: {server_addr}@{port}...')
    manager = QueueManager(address=(server_addr, port), authkey=authkey)
    manager.connect()
    # get queue on network
    task = manager.get_task_queue()
    # get result on network
    result = manager.get_result_queue()

    while True:
        try:
            n = task.get(timeout=1)
            print(f'Run task {n} * {n}')
            r = f'{n} * {n} = {n*n}'
            result.put(r)
            time.sleep(1)
        except queue.Empty:
            print('Task queue is empty.')
            result.put('done')
            break
    print('Worker exit.')


  • 1

Reply