Как я могу распараллелить цикл for в python? - PullRequest
0 голосов
/ 25 октября 2018

Я написал функцию для анализа графиков в Python (использует NetworkX), и мне нужно запустить ее 500 раз, что занимает очень много времени.Я попытался распараллелить его с помощью пула из многопроцессорной обработки, но он разбил мой компьютер, даже когда я установил небольшое значение диапазона, например 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)
...