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))DavidBeazley和BrianK.Jones(O'Reilly)撰写的PythonCookbook,第3版。版权所有2013DavidBeazley和BrianJones,978-1-449-34037-7。