当我从终端(命令行(运行多处理python程序时,一切都很好。
$ /home/florian/tests/run_tests.sh -d -w
脚本run_tests.sh
只是Python调用的包装器(设置变量并调用Python(
当与我使用SSH从另一个框运行的命令完全相同时,几乎所有任务(进程(都会因"分段故障"而失败(189个任务中的165个[87%](:
$ ssh -o StrictHostKeyChecking=no florian@remote '/home/florian/tests/run_tests.sh -d -w'
环境:
OS: SLES11
Python: 3.8.1
GNU bash, version 3.2.57(2)-release (x86_64-suse-linux-gnu)
Number of CPUs: 24
core file size (blocks, -c) 1
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1029396
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) 112008408
open files (-n) 32768
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 32768
cpu time (seconds, -t) unlimited
max user processes (-u) 1029396
virtual memory (kbytes, -v) 108780880
file locks (-x) unlimited
我甚至试图将使用的CPU数量限制为1-仍然无法使用
import multiprocessing as mp
#pool = mp.Pool(mp.cpu_count())
pool = mp.Pool(1)
- 你知道它为什么会这样做吗:在本地工作,在ssh上失败
- 你知道任何SSH设置可以帮助内存分配吗(如果这是一个问题(
提前感谢,兹比格涅夫
对于任何将面临类似问题的人:问题出现在环境变量中。
当通过SSH连接时,只剩下一些变量——其余的都被清除了(请参阅SSH描述中的详细信息(。
因此,在包装器脚本中,我不得不使用export LD_LIBRARY_PATH
——感谢我的同事Francois提供的非常有价值的提示:(
愚蠢的错误,但是。。。也许有人从这个答案中受益。