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中最紧凑的类似JS的线程模型?_Python_Multithreading - Fatal编程技术网

Python中最紧凑的类似JS的线程模型?

Python中最紧凑的类似JS的线程模型?,python,multithreading,Python,Multithreading,我对多线程模型或模块感兴趣,它提供了比线程模块更紧凑的框架,甚至可能比使用asyncio模块的async/await模型更紧凑的框架(仍然需要创建至少两个异步函数才能完成所有工作)。 就像JavaScript的Promise.all(…)一样,它应该能够提供线程工作者列表,并在所有任务完成后返回其结果列表(由线程函数返回)。wait似乎离它最近,但不幸的是它不遵守结果列表中输入列表的顺序(可能是由输入线程的完成时间决定的) 我发现Py中最简单的模型是 import asyncio, random

我对多线程模型或模块感兴趣,它提供了比线程模块更紧凑的框架,甚至可能比使用asyncio模块的async/await模型更紧凑的框架(仍然需要创建至少两个异步函数才能完成所有工作)。 就像JavaScript的Promise.all(…)一样,它应该能够提供线程工作者列表,并在所有任务完成后返回其结果列表(由线程函数返回)。wait似乎离它最近,但不幸的是它不遵守结果列表中输入列表的顺序(可能是由输入线程的完成时间决定的)

我发现Py中最简单的模型是

import asyncio, random

async def thread(n):
    await asyncio.sleep(random.randint(1, 5))
    return n**3

async def main():
    return await asyncio.gather(*map(thread, range(1, 11)))

print('Starting...')
results = asyncio.run(main())
print(results)
在JS中,它仍然可以写得更紧凑,逻辑性更强:

Promise.all(Array.from(Array(4).keys()).map(index => new Promise(function(resolve) {
  setTimeout(() => { resolve((index + 1) ** 3) }, (1 + Math.random() * 4) * 1000);
}))).then(results => { console.log(results) });
所以我想问的是,我是否可以在Python中更接近这一点