Python多进程是如何工作的?

1 投票
1 回答
1675 浏览
提问于 2025-04-18 06:06

我想了解一下多进程是怎么工作的。

这是不是意味着如果我有一个8核的CPU,我可以同时运行8个独立的进程

比如这是我的处理器信息。

giri@ubuntu:~$ 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

这是我的cpu信息

giri@ubuntu:~$ 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数量是1

这是不是意味着在我的情况下,多进程就没用了?

1 个回答

1

如果你的电脑有N个核心,那么你可以同时运行N个线程(假设每个核心只能处理一个线程)。不过,如果你试着运行的线程数量超过了你的处理器数量,操作系统就会把这些线程分成小块一个接一个地执行,这样看起来就像是同时在运行一样。
所以在这种情况下,多线程并不会让你的代码运行得更快,但它有时候很有意思。比如,你可以让一个线程在等待硬盘的回复,同时另一个线程在等待网络,而第三个线程则在运行...
i3-2350M处理器应该有2个核心,每个核心可以处理2个线程,所以它可以同时运行4个线程。

撰写回答