0

我第一次在 Python 中遇到并发问题,我的目标是优化我的脚本。基本上我有一个脚本,它使用 os.system 针对某些文件调用第三方 jar 工具。我的第一个“程序”版本大约需要 135 秒才能完成,在使用线程(threading.Threadthreading.Queue)127 之后,现在切换到多进程(multiprocessing.Processmultiprocessing.JoinableQueue)113 秒......但仍然很多时间......你能给我一些反馈和/或给我指出一篇可以解决我的问题的文章吗?

(我使用的是 Python 2.7.1,我想避免使用 3d 派对模块)

4

1 回答 1

2

许多人似乎认为多线程会“神奇地”加速他们的应用程序。多线程可能带来的性能提升取决于几个因素:主要是 CPU 内核的数量和应用程序的类型。

当我说“应用程序类型”时,我指的是将您的应用程序分成多个部分并并行执行是否有意义。你没有提供足够的信息让我们能够确定,但你应该分析它并尝试确定它是否有意义。

今天的大多数 CPU 都是多核的,因此线程不应受此约束,除非您创建的线程多于内核,因此请注意创建的线程数量。

如果您想知道为什么多处理(分叉进程)比线程更快,这很可能是由于 Python全局解释器锁(GIL) 导致 Python 多线程性能不佳。

更新:如果您正在编译(基于您的评论:“我正在使用 Google Closure JavaScript 编译器”)并且想要坚持使用 Python,您应该尝试SCons。它是一个非常酷的构建工具,它的构建脚本都是 Python 的。

于 2012-10-23T14:52:46.423 回答