Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PBS集群节点上的多处理_Python_Multiprocessing_Hpc_Pbs - Fatal编程技术网

Python PBS集群节点上的多处理

Python PBS集群节点上的多处理,python,multiprocessing,hpc,pbs,Python,Multiprocessing,Hpc,Pbs,我必须用不同的参数(或随机数生成器种子)运行同一模型的多个模拟。以前,我在一个有很多内核的服务器上工作,在那里我使用了带有apply\u async的python多处理库。这非常方便,因为我可以决定要占用的最大内核数,模拟只需进入一个队列 正如我从其他问题中了解到的那样,只要您只在一个节点上工作,多处理就可以在pbs集群上工作,这目前还可以。然而,我的代码并不总是有效的 要让您了解我的代码类型: import functions_library as L import multiprocessi

我必须用不同的参数(或随机数生成器种子)运行同一模型的多个模拟。以前,我在一个有很多内核的服务器上工作,在那里我使用了带有apply\u async的python多处理库。这非常方便,因为我可以决定要占用的最大内核数,模拟只需进入一个队列

正如我从其他问题中了解到的那样,只要您只在一个节点上工作,多处理就可以在pbs集群上工作,这目前还可以。然而,我的代码并不总是有效的

要让您了解我的代码类型:

import functions_library as L
import multiprocessing as mp
if __name__ == "__main__":

    N = 100

    proc = 50
    pool = mp.Pool(processes = proc)



    seed = 342
    np.random.seed(seed)

    seeds = np.random.randint(low=1,high=100000,size=N)

    resul = []
    for SEED in seeds:

        SEED = int(SEED)

        resul.append(pool.apply_async(L.some_function, args = (some_args)))
        print(SEED)

    results = [p.get() for p in resul]

    database = pd.DataFrame(results)


    database.to_csv("prova.csv")

该函数创建3个N=10000的networkx图并对其执行一些计算,然后返回一个简单的简短python字典

我无法调试的奇怪事情是以下错误消息:

multiprocessing.pool.MaybeEncodingError:发送结果时出错:>''.>原因:“RecursionError('调用>Python对象时超出了最大递归深度')”

奇怪的是,我在不同的节点上运行了多个代码。代码正确运行3次,而大多数情况下返回上一个错误。我尝试了不同数量的并行模拟,从7到20(节点的#核心),但似乎没有模式,所以我想这不是内存问题

在其他问题中,类似的错误似乎与酸洗奇怪的或大的对象有关,但在这种情况下,函数产生的唯一结果是一个简短的字典,因此它不应该与此相关。 在开始工作时,我还尝试使用sys库增加允许的递归深度,但没有达到15000


有没有解决或至少理解这种行为的想法?

这与特征向量的中心性()不收敛有关。 在多处理外部运行时,它正确地返回networkx错误,而在它内部只返回此递归错误


我不知道这是否是一种奇怪的非常特定于函数的行为,或者有时多处理无法处理某些库错误。

我想我们需要查看“some_function()”的来源。我基本上使用networkx创建三个不同的随机图,并对它们计算4个不同的中心性度量。其中一些可能是内存密集型的计算,但这并不能解释为什么有时它可以工作,而进行较少的并行计算并没有改善。如果您需要进一步的详细信息,请告诉我您是否正在使用
find\u cliques\u recursive()
方法?显然这与特征向量的中心性()不收敛有关。当在多处理外部运行时,它正确地返回networkx错误,而在它内部只返回此递归错误。谢谢我错误地认为它与pbs集群有关,并错误地调试了它