我用 python 和 asyncio 创建了一个简单的 HTTP 服务器。但是,我读到基于 asyncio 的服务器只能利用一个 CPU 核心。我正在尝试解决这个问题,multiprocessing但它不起作用。当我尝试创建进程时,它给我一个错误,指出它无法从 _winapi 创建进程。到目前为止,这是我的代码:
def serve_forever(self, host, port):
srv, loop = self.init(host, port)
print()
if self.name:
print('* Serving App {}'.format(self.name))
print('* Serving On http://{host}:{port}'.format(host=host, port=port))
print('* Press <CTRL-C> To Quit')
workers = []
try:
for i in range(mp.cpu_count()-1):
p = mp.Process(target=loop.run_forever)
workers.append(p)
p.start()
loop.run_forever()
except KeyboardInterrupt:
print()
for p in workers:
p.terminate()
srv.close()
loop.run_until_complete(srv.wait_closed())
loop.close()
pass
Run Code Online (Sandbox Code Playgroud)
顺便说一句,该self.init功能有效。