Python多进程甚至在单线程中也减慢了速度

2024-05-08 13:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用多进程并行运行相同的代码。你知道吗

我的进程代码只运行了8分钟。在10分钟内使用“强制单线程”的东西。但当我并行运行24个实例时,每个实例大约需要1个小时。你知道吗

以前,当每个进程像疯子一样疯狂地跨越线程时,我的上下文切换为1.6M。 然后我使用了下面的env。强制Numpy每个进程只使用一个线程的变量:

os.environ["NUMEXPR_NUM_THREADS"] = '1'
os.environ["OMP_NUM_THREADS"] = '1'
os.environ["MKL_THREADING_LAYER"] = "sequential"  # Better than setting MKL_NUM_THREADS=1 (source: https://software.intel.com/en-us/node/528380)

即使在那之后,我的问题仍然存在。我每个进程有大约1小时的运行时间。 使用glans,除了使用95-100%的CPU(glans中为红色)之外,其余都是绿色的,内存、bandwith,甚至上下文切换都在5K左右恢复正常

你知道为什么会这样吗?我不明白为什么这是6倍慢并行时,没有明显的指标弹出的目光

这是附件中的浏览截图glances output


Tags: 实例代码numpyenv进程osenviron线程
1条回答
网友
1楼 · 发布于 2024-05-08 13:28:44

对于我的具体问题,我已经找到了答案。这似乎是由于我的硬件,而不是代码。你知道吗

该代码在另一台16个cpu的服务器上运行良好。当我使用其中15个的时候,我得到了8分钟的时间,这正是我想要的。你知道吗

我认为旧服务器中的某些东西使多进程处理速度变慢。你知道吗

无法工作的旧服务器:

processor   : 23
vendor_id   : AuthenticAMD
cpu family  : 16
model       : 8
model name  : Six-Core AMD Opteron(tm) Processor 8439 SE
stepping    : 0
cpu MHz     : 2800.000
cache size  : 512 KB
physical id : 3
siblings    : 6
core id     : 5
cpu cores   : 6
apicid      : 29
initial apicid  : 29
fpu     : yes
fpu_exception   : yes
cpuid level : 5
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall npt lbrv svm_lock nrip_save pausefilter
bugs        : tlb_mmatch fxsave_leak sysret_ss_attrs null_seg amd_e400 spectre_v1 spectre_v2
bogomips    : 5600.33
TLB size    : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate

工作的新服务器:

processor   : 15
vendor_id   : GenuineIntel
cpu family  : 6
model       : 42
model name  : Intel Xeon E312xx (Sandy Bridge)
stepping    : 1
microcode   : 0x1
cpu MHz     : 2599.998
cache size  : 16384 KB
physical id : 1
siblings    : 8
core id     : 7
cpu cores   : 8
apicid      : 15
initial apicid  : 15
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 mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm arat xsaveopt
bogomips    : 5199.99
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

相关问题 更多 >

    热门问题