我有一个Python C扩展,它从套接字获取数据并对其进行处理,在处理过程中它会释放GIL。目前我使用2个Python线程,由于GIL的发布,它们很好地交织在一起,导致两个CPU内核上90%的负载。
我如何在Python 3 asyncio中实现同样的功能?我找不到正确的Python-C-API命令来告诉事件循环它可以执行其他操作。
或者换一种说法:如果我的扩展释放了GIL,这是否意味着它不会阻止eventloop中下一个可用项的执行?例如,当我的C扩展正在处理第一个套接字的数据时,是否会读取下一个套接字?我在任何地方都找不到这个。据我所知,通过这种方式,我可以从许多套接字中获取数据,并将更多的CPU内核投入工作。
https://stackoverflow.com/questions/47620133
复制相似问题