Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python asyncio事件循环时间复杂度与计划的任务数之比是多少?_Python_Ubuntu 16.04_Python Asyncio_Event Loop - Fatal编程技术网

python asyncio事件循环时间复杂度与计划的任务数之比是多少?

python asyncio事件循环时间复杂度与计划的任务数之比是多少?,python,ubuntu-16.04,python-asyncio,event-loop,Python,Ubuntu 16.04,Python Asyncio,Event Loop,对于Linux中的默认事件循环,按调度的任务数计算的事件循环时间复杂度是多少 我想知道大量的任务是否会导致性能问题 否则,epoll也一样,它具有O(1)时间复杂度?我认为你不会找到这类事情的保证或权威文档。查看asyncio的源代码,可以肯定地看出,使用正确的数据结构来扩展到大量任务需要付出努力-集合。deque用于可运行队列,heapq用于超时的堆,epoll/kqueue/IOCP用于轮询等等。但软件是复杂的,唯一真正知道的方法是测量。我认为在你感觉到任何重大的时间问题之前,你更有可能首先

对于
Linux
中的默认
事件循环
,按调度的
任务数计算的
事件循环
时间复杂度是多少

我想知道大量的
任务是否会导致性能问题


否则,
epoll
也一样,它具有
O(1)
时间复杂度?

我认为你不会找到这类事情的保证或权威文档。查看
asyncio
的源代码,可以肯定地看出,使用正确的数据结构来扩展到大量任务需要付出努力-
集合。deque
用于可运行队列,
heapq
用于超时的堆,epoll/kqueue/IOCP用于轮询等等。但软件是复杂的,唯一真正知道的方法是测量。我认为在你感觉到任何重大的时间问题之前,你更有可能首先耗尽内存。@hawkcurry你测量过吗?与占用各种操作系统资源(包括预先分配的整个堆栈)的线程不同,协同程序占用的内存很小,仅为保存生成器和相应的
任务
实例的状态所需的内存量。在一台现代计算机上,在内存耗尽之前,您可以启动数百万个协同路由,而且不明显的是,asyncio是否在大量超出合理数量的任务中进行了主动测试。如果没有其他问题,Python的循环GC将花费足够长的时间来引入明显的延迟。我还没有测量过,但在使用async时,我遇到了一些问题,asyncio会占用我很多内存。的确,协同路由的初始内存占用很小,但根据应用程序的不同,每个协同路由最终消耗的内存可能比您预期的要多得多。假设你制作了一个网络爬虫来启动几个并发的网络请求,对这些请求的响应将存储在内存中。通常情况下,我必须设置一个并发限制来处理这个问题。我不认为协同程序本身会消耗大量内存,但它的数据是伴随这些任务而来的。@hawkcurry内存问题可能因任何原因而出现,其中许多是特定于应用程序的。这个问题通常与
asyncio
有关,这是一个有趣的问题(尽管对于StackOverflow来说可能有点太宽泛)。说“您将首先耗尽内存”并不能回答这个问题,因为有些应用程序可以在内存即将耗尽之前创建大量的协同路由。