Skip to content

Instantly share code, notes, and snippets.

@cryptowen
Created November 24, 2015 10:56
Show Gist options
  • Save cryptowen/2fd8ad0330908ff24ec4 to your computer and use it in GitHub Desktop.
Save cryptowen/2fd8ad0330908ff24ec4 to your computer and use it in GitHub Desktop.
使用了多进程的gevent服务器,可以用来改进一些IO密集型操作的性能
import sys
from gevent import server
from gevent import monkey
monkey.patch_os()
from multiprocessing import Process, current_process, cpu_count
def eat_cpu():
for i in xrange(100000):
pass
def note(format, *args):
sys.stderr.write('[%s]\t%s\n' % (current_process().name, format % args))
def echo(socket, address):
print 'New connection from %s:%s' % address
print 'on %s' % current_process().name
eat_cpu()
fileobj = socket.makefile()
fileobj.write('HTTP/1.1 200 OK\n\nHello World!!')
s = server.StreamServer(('127.0.0.1', 8001), echo)
s.init_socket()
def serve_forever(server):
note('starting server')
try:
server.start_accepting()
try:
server._stop_event.wait()
except:
raise
except KeyboardInterrupt:
pass
number_of_processes = cpu_count() - 1
print 'Starting %s processes' % number_of_processes
for i in range(number_of_processes):
Process(target=serve_forever, args=(s,)).start()
s.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment