Alo*_*oad 11 python performance process cpu-usage multiprocessing
我使用Python 2.5.4.我的电脑:CPU AMD Phenom X3 720BE,主板780G,4GB RAM,Windows 7 32位.
我使用Python线程但不能使每个python.exe进程消耗100%的CPU.为什么他们平均只使用33-34%?
我希望将所有可用的计算机资源用于这些大型计算,以便尽快完成它们.
编辑:谢谢大家.现在我使用的是Parallel Python,一切运行良好.我的CPU现在总是100%.谢谢大家!
int*_*tgr 34
看来你有一个3核CPU.如果要在本机Python代码中使用多个CPU内核,则必须生成多个进程.(两个或多个Python线程无法在不同的CPU上并发运行)
正如R. Pate所说,Python的multiprocessing模块是一种方式.但是,我建议改为使用Parallel Python.它负责分发任务和消息传递.您甚至可以在许多单独的计算机上运行任务,而对代码的更改很少.
使用它很简单:
import pp
def parallel_function(arg):
return arg
job_server = pp.Server()
# Define your jobs
job1 = job_server.submit(parallel_function, ("foo",))
job2 = job_server.submit(parallel_function, ("bar",))
# Compute and retrieve answers for the jobs.
print job1()
print job2()
Run Code Online (Sandbox Code Playgroud)
小智 25
尝试多处理模块,就像Python一样,虽然它有真正的本机线程,但在GIL被保持时会限制它们的并发使用.另一种选择,如果你需要真正的速度,你应该看一下,就是编写C扩展模块并从Python中调用函数.您可以在这些C函数中释放GIL.
另见David Beazley的Mindblowing GIL.
Siv*_*vvy 11
使用这种锁的原因包括:
Run Code Online (Sandbox Code Playgroud)* increased speed of single-threaded programs (no necessity to acquire or release locks on all data structures separately) * easy integration of C libraries that usually are not thread-safe.用GIL语言编写的应用程序必须使用单独的进程(即解释器)来实现完全并发,因为每个解释器都有自己的GIL.
| 归档时间: |
|
| 查看次数: |
21641 次 |
| 最近记录: |