小编all*_*546的帖子

有没有办法通过 asyncio 来利用多个 CPU 核心?

我用 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功能有效。

python windows multiprocessing python-3.x python-asyncio

8
推荐指数
1
解决办法
6243
查看次数