Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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库发出多个带有超时的异步请求并合并它们的返回值?_Python_Multithreading_Concurrency_Python 3.7_Mutual Exclusion - Fatal编程技术网

如何使用可用的python库发出多个带有超时的异步请求并合并它们的返回值?

如何使用可用的python库发出多个带有超时的异步请求并合并它们的返回值?,python,multithreading,concurrency,python-3.7,mutual-exclusion,Python,Multithreading,Concurrency,Python 3.7,Mutual Exclusion,我有一个基于web的资源,可以处理并发请求。我希望异步请求此资源,并将返回结果的总和存储到列表中。这很容易用伪代码解释,但很难用python实现(对我来说) 我喜欢这种模式,因为我能够使请求并发。这些请求受I/O限制,我相信这种模式将允许我更有效地利用CPU资源 我相信我有一些问题需要解决 1) 为了在for循环中生成异步并发请求,我需要弄清楚要使用什么库 2) 我需要使用一些同步来保护写入时的结果列表 3) 这在超时情况下必须是可能的 我以前见过的一种模式是使用spawn异步线程,让每个线程依

我有一个基于web的资源,可以处理并发请求。我希望异步请求此资源,并将返回结果的总和存储到列表中。这很容易用伪代码解释,但很难用python实现(对我来说)

我喜欢这种模式,因为我能够使请求并发。这些请求受I/O限制,我相信这种模式将允许我更有效地利用CPU资源

我相信我有一些问题需要解决

1) 为了在for循环中生成异步并发请求,我需要弄清楚要使用什么库

2) 我需要使用一些同步来保护写入时的结果列表

3) 这在超时情况下必须是可能的

我以前见过的一种模式是使用spawn异步线程,让每个线程依次创建自己的异步线程来处理请求。超时时,父线程中止子线程。但是,我不喜欢这样,因为我必须在内存中保存2倍的线程执行上下文

我考虑过各种pypi包,如subprocess和asyncio,但我无法确定此用例的最佳解决方案

for request in requests:
    perform_async_request_of_resource(request, result_list, timeout)
wait_until_all_requests_return_or_timeout()
process_results()