我发现在Python3.4中,用于多处理/线程的库很少:multiprocessingvsthreadingvsasyncio.

但我不知道该用哪一个,或者是"推荐的".他们做的是同一件事,还是不同?如果是,哪一个用于什么?我想写一个在我的计算机中使用多核的程序.但我不知道该go 哪个图书馆.

推荐答案

它们用于(略微)不同的目的和/或要求.CPython(一个典型的主线Python实现)仍然有global interpreter lock个线程,因此多线程应用程序(现在实现并行处理的标准方式)是次优的.这就是为什么multiprocessing-maythreading更受欢迎.但并不是每个问题都可以有效地分割成[几乎独立的]部分,因此可能需要大量的进程间通信.这就是为什么multiprocessing通常不比threading好.

asyncio(这种技术不仅在Python中可用,其他语言和/或框架也有,例如Boost.ASIO)是一种有效处理来自多个同时源的大量I/O操作的方法,而不需要并行代码执行.所以这只是一个解决方案(确实是一个很好的解决方案!)用于特定任务,而不是一般的并行处理.

Python相关问答推荐

Polars:使用列值引用when / then表达中的其他列

大Pandas 胚胎中产生组合

@Property方法上的inspect.getmembers出现意外行为,引发异常

如何从具有不同len的列表字典中创建摘要表?

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

数据抓取失败:寻求帮助

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

在vscode上使用Python虚拟环境时((env))

如何在Polars中从列表中的所有 struct 中 Select 字段?

提取相关行的最快方法—pandas

UNIQUE约束失败:customuser. username

计算天数

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

使用Python和文件进行模糊输出

在matplotlib中删除子图之间的间隙_mosaic

找到相对于列表索引的当前最大值列表""

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

需要帮助使用Python中的Google的People API更新联系人的多个字段'

解决Geopandas和Altair中的正图和投影问题