【问题标题】:Efficient Python programming for 4-core PC with threading?具有线程的 4 核 PC 的高效 Python 编程?
【发布时间】:2013-06-01 15:49:02
【问题描述】:

我正在寻找编写一个脚本来探索一些模拟软件中的参数空间。最初,我只想运行模拟脚本,比如 100 次,每次递增一个参数。

这是在不用于其他任何用途的机器上运行,所以理想情况下我会利用它的所有四个内核来加快处理速度。

有人能推荐一种有效的方法吗?

我考虑过生成 100 个 python 脚本,然后将它们放入 bash 脚本中。 或者,我可以编写一个 Python 脚本来在 FOR 循环中执行所有操作。我想我可以使用线程来允许一次执行 4 个操作。如果这看起来很合理,那么将硬编码到软件中以创建和处理 4 个线程的最佳实现方法是,还是 Python 有一种聪明的方法来有效地处理 CPU 使用率?

非常感谢,

【问题讨论】:

  • 仅供参考,参考 Python 实现有一个 GIL,这使得在使用 threading 模块时几乎不可能利用多个内核。这在 CLR 或 JVM 上不是问题,因为它有 real 线程。 IIRC,像numpy 这样的科学库通过将其以本机代码处理一些用例来解决这个问题,但出于所有一般目的,不要太相信CPython中的多线程。跨度>

标签: python multithreading performance


【解决方案1】:

您应该使用multiprocessing 模块而不是threading

http://docs.python.org/2/library/multiprocessing.html

您可以创建多个进程,由系统来优化 CPU 使用率。

【讨论】:

  • 注意:不要创建超过可用硬件线程数的进程。
  • @KarolyHorvath:不总是;这取决于。如果您的一个进程在 I/O 上花费大量时间,则另一个进程可以潜入以利用 CPU 来最大化吞吐量。
  • 是的,但根据他写的内容,我很确定它受 CPU 限制,涉及的 I/O 并不多。
  • 好的,会调查的,谢谢。是的,我没有 I/O,只有一些需要反复求解的重型方程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
相关资源
最近更新 更多