如何在python中并行化for循环?

2024-10-06 06:56:48 发布

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

我用Python编写了一个函数来分析图形(使用NetworkX),我需要运行它500次,这需要很长的时间。我尝试用多处理中的Pool并行化它,但它使我的计算机崩溃,即使我将范围设置为一个小值,比如5,而不是500。有人能看看吗?谢谢!在

import numpy as np
import random as rn
import networkx as nx
import operator
import bcCalcs
from multiprocessing import Process

n1 = 100
n2 = 200
p = 1/2
q = 1/4000

percent = 0

def baInter():

    global percent
    icCount = .1*(n1+n2)
    while icCount >= (.1*(n1+n2)):

        ba = bcCalcs.baModel(n1, n2, 4, 4, q)

        g = nx.from_numpy_matrix(ba)

        globalBC = nx.betweenness_centrality(g, normalized = False)
        globalBCsorted = bcCalcs.sortBC(globalBC, 1)
        interCommNodes = bcCalcs.inter_comm_nodes(ba, n1)
        icCount = len(interCommNodes)


    for node in globalBCsorted:
        if node[0] in interCommNodes:
            percent = percent + 1

    print("x")        

if __name__ == "__main__":

    procs = []

    for i in range(500):
        proc = Process(target=baInter)
        procs.append(proc)
        proc.start()

    for proc in procs:
        proc.join

percent = 100*(percent/500)

print(percent)

Tags: inimportnumpyforasprocpercentnx