当前位置: 首页 > 面试题库 >

多进程或Python中的线程?

慕容铭
2023-03-14
问题内容

我有一个python应用程序,它可以捕获数据集合,并针对该集合中的每个数据执行任务。由于涉及到延迟,因此该任务需要一些时间才能完成。由于这种延迟,我不希望每个数据都随后执行任务,而是希望它们全部并行发生。我应该使用多进程吗?或执行此操作的线程?

我尝试使用线程,但遇到了一些麻烦,通常某些任务实际上不会执行。


问题答案:

如果您确实受到计算的限制,那么使用多处理模块可能是最轻巧的解决方案(就内存消耗和实现难度而言)。

如果您受I / O约束,那么使用线程模块通常会给您带来良好的效果。确保使用线程安全存储(例如Queue)将数据移交给线程。否则,将它们生成时交给他们的唯一的一条数据。

PyPy专注于性能。它具有许多可帮助进行计算绑定处理的功能。他们还支持软件事务存储,尽管这还不是生产质量。答应的是,您可以使用比多处理更简单的并行或并发机制(这有一些尴尬的要求。)

无堆栈Python也是一个好主意。如上所述,Stackless具有可移植性问题。空载燕子是有前途的,但现在已不复存在。Pyston是另一个专注于速度的(未完成的)Python实现。它采用的方法不同于PyPy,可能会产生更好(或略有不同)的加速。



 类似资料:
  • 问题内容: 为了在Linux上开发高度网络密集型服务器应用程序,首选哪种架构?这个想法是,该应用通常可以在具有多个内核(虚拟或物理)的机器上运行。考虑到性能是关键标准,选择多线程应用程序还是采用多进程设计更好?我确实知道资源共享和从多个进程访问此类资源的同步是很多编程开销,但是如前所述,整体性能是关键要求,因此我们可以忽略这些事情。编程语言为C / C ++。 我听说,即使是多线程应用程序(单个进

  • 我知道子进程是进程,而不是线程。我使用了错误的语义,因为大多数人在谈到“多线程”时都知道您的意图。所以我会把它保留在标题中。 想象一下这样一个场景:使用一个自定义函数或模块,您连续有多个类似和复杂的事情要做。使用所有可用的核心/线程(例如8/16)非常有意义,这就是的目的。 理想情况下,您需要多个同时工作的人员,并向一个控制器发送/从一个控制器发送/回调消息。 node cpool、fork po

  • 问题内容: 我想并行化我的Python程序,以便它可以在运行它的机器上使用多个处理器。我的并行化非常简单,程序的所有并行“线程”都是独立的,并将其输出写入单独的文件。我不需要线程交换信息,但是必须知道线程何时完成,因为管道的某些步骤取决于它们的输出。 可移植性很重要,因为我希望它可以在Mac,Linux和Windows上的任何Python版本上运行。考虑到这些限制,哪个是实现此功能的最合适的Pyt

  • 问题内容: 如何使用线程和子流程模块产生并行bash流程?当我启动线程时,这里的第一个答案是:如何在Python中使用线程?,bash进程按顺序运行,而不是并行运行。 问题答案: 你不需要线程来并行运行子流程: 为了限制并发命令的数量,可以使用线程并提供与使用进程相同的接口: 该答案演示了限制并发子进程数的各种技术:它显示了,线程+基于队列的解决方案。 你可以限制并发子进程的数量,而无需使用线程/

  • 本文向大家介绍Python中单线程、多线程和多进程的效率对比实验实例,包括了Python中单线程、多线程和多进程的效率对比实验实例的使用技巧和注意事项,需要的朋友参考一下 python的多进程性能要明显优于多线程,因为cpython的GIL对性能做了约束。 Python是运行在解释器中的语言,查找资料知道,python中有一个全局锁(GIL),在使用多进程(Thread)的情况下,不能发挥多核的优

  • 本文向大家介绍Python多线程多进程实例对比解析,包括了Python多线程多进程实例对比解析的使用技巧和注意事项,需要的朋友参考一下 多线程适合于多io操作 多进程适合于耗cpu(计算)的操作 可以看到在耗cpu的应用中,多进程明显优于多线程 2.6130592823028564 < 3.905290126800537 下面模拟一个io操作 可以看到 8.00358772277832 < 8.1