2014-05-10 64 views
1

我想知道多处理如何工作。python多处理如何工作?

这是否表示我可以同时运行8 separate process,如果我有8 core CPU

例如,这里是我的处理器信息。

[email protected]:~$ lscpu 
Architecture:   x86_64 
CPU op-mode(s):  32-bit, 64-bit 
Byte Order:   Little Endian 
CPU(s):    1 
On-line CPU(s) list: 0 
Thread(s) per core: 1 
Core(s) per socket: 1 
Socket(s):    1 
NUMA node(s):   1 
Vendor ID:    GenuineIntel 
CPU family:   6 
Model:     42 
Stepping:    7 
CPU MHz:    2294.762 
BogoMIPS:    4589.52 
Virtualization:  VT-x 
L1d cache:    32K 
L1i cache:    32K 
L2 cache:    256K 
L3 cache:    3072K 
NUMA node0 CPU(s):  0 

这是我cpuinfo中

[email protected]:~$ cat /proc/cpuinfo 
processor : 0 
vendor_id : GenuineIntel 
cpu family : 6 
model  : 42 
model name : Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz 
stepping : 7 
microcode : 0x23 
cpu MHz  : 2294.762 
cache size : 3072 KB 
physical id : 0 
siblings : 1 
core id  : 0 
cpu cores : 1 
apicid  : 0 
initial apicid : 0 
fpu  : yes 
fpu_exception : yes 
cpuid level : 13 
wp  : yes 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid 
bogomips : 4589.52 
clflush size : 64 
cache_alignment : 64 
address sizes : 36 bits physical, 48 bits virtual 
power management: 

正如你看到的,我的CPU(S)的数量为1

这是否意味着多处理在我的情况下没用?

+0

如果这是一个超线程CPU,那么您仍然可以同时运行两个进程。但总的来说,您可以同时运行,尽可能多的进程与您的计算机上的逻辑核心CPU一样多。我假设你在这种情况下有一个超线程CPU,所以多处理不应该_useless_ - 只是不_as useful_ – inspectorG4dget

+0

请向我们展示'cat/proc/cpuinfo' – Pavel

+0

@Pavel更新了我的问题 – Giri

回答

2

如果您有N个内核(如果每个内核的线程数为1),则可以同时运行N个线程。尽管如果你尝试运行比你有更多的处理器的线程,操作系统会依次运行你的线程,并且它们看起来并行运行。
因此,在这种情况下,多线程不会允许您的代码更快,但它通常很有趣,例如,您可以有一个线程等待磁盘回复,而另一个等待网络并且第三个运行...
i3-2350M应该是每个内核2个核心/ 2个线程,所以4个线程同时运行。

+0

嗯。谢谢..所以,如果我购买4核心处理器,这是否意味着我可以运行16个线程?当你的意思是“线程”时,你不是在说多线程的权利? – Giri

+0

我在说多线程,线程是一个进程中的一个'指令序列'(同一进程中的两个线程共享内存空间)。一个进程至少有一个线程。在我目前的笔记本电脑上,我有4个内核(两个核心线程),能够同时运行8个线程,尽管'ps -ef | wc'显示我目前有266个进程。多线程是一种编程技术,您可以创建多个线程来处理问题,它们将全部并行运行(如果您有足够的内核,则实际上是并行运行,如果不是,则显然是并行运行)。 –

+0

线程通常花费大部分时间等待资源(磁盘,网络,其他I/O,锁,...),因此同时使用cpu的实际线程数量通常仍然很小。诸如nmon或vmstat之类的工具可以向您显示这个(vmstat中的'r')。 –