【发布时间】:2021-05-10 14:46:51
【问题描述】:
我用 python 和 asyncio 创建了一个简单的 HTTP 服务器。但是,我读到基于异步的服务器只能利用一个 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
顺便说一句,self.init 函数有效。
【问题讨论】:
标签: python python-3.x windows multiprocessing python-asyncio