Python创建工作池

示例

使用threading&queue:

from socket import socket, AF_INET, SOCK_STREAM
from threading import Thread
from queue import Queue
    
def echo_server(addr, nworkers):
    print('Echo server running at', addr)
    # 启动客户工人
    q = Queue()
    for n in range(nworkers):
        t = Thread(target=echo_client, args=(q,))
       t.daemon= True
        t.start()

    # 运行服务器
    sock = socket(AF_INET, SOCK_STREAM)
    sock.bind(addr)
    sock.listen(5)
    while True:
        client_sock, client_addr = sock.accept()
        q.put((client_sock, client_addr))

echo_server(('',15000), 128)

使用concurrent.futures.Threadpoolexecutor:

from socket import AF_INET, SOCK_STREAM, socket
fromconcurrent.futuresimport ThreadPoolExecutor

def echo_server(addr):
    print('Echo server running at', addr)
    pool = ThreadPoolExecutor(128)
    sock = socket(AF_INET, SOCK_STREAM)
    sock.bind(addr)
    sock.listen(5)
    while True:
        client_sock, client_addr = sock.accept()
        pool.submit(echo_client, client_sock, client_addr)

echo_server(('',15000))

David Beazley和Brian K.Jones(O'Reilly)撰写的Python Cookbook,第3版。版权所有2013 David Beazley和Brian Jones,978-1-449-34037-7。