import multiprocessing
import threading
import time
def job(m, n):
print('hello world', m, n)
time.sleep(10)
t1 = threading.Thread(target=job,args=(1,2)) # 多线程
t1.start()
t1.join()
p1 = multiprocessing.Process(target=job,args=(3,4)) # 多进程
p1.start()
p1.join()
# 线程池和进程池
import time
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
def job(i):
print('hello world', i)
time.sleep(10)
tp = ProcessPoolExecutor(max_workers=50)
for i in range(30):
tp.submit(job, i)
利用并发处理来自客户端的请求,
server端
线程池处理请求
import sys
import socket
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(('', 9091))
server.listen(5)
def run(conn):
while True:
data = conn.recv(1024)
if not data:
break
conn.send(data.upper())
conn.close()
ti = ThreadPoolExecutor(max_workers=10)
while True:
conn, dir = server.accept()
print(conn, dir)
ti.submit(run(conn))
多线程处理请求
import threading
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import socket
# 建立一个服务端
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(('',9091)) #绑定要监听的端口
server.listen(5) #开始监听 表示可以使用五个链接排队
def run(conn):
while True:
data = conn.recv(1024)
if not data:break
conn.send(data.upper())
conn.close()
while True:# conn就是客户端链接过来而在服务端为期生成的一个链接实例
conn,addr = server.accept() #等待链接,多个链接的时候就会出现问题,其实返回了两个值
print(conn,addr)
t1 = threading.Thread(target=run, args=(conn,))
t1.start()
telnet 10.0.122.156 9091
网友评论