0

コードのプロファイルを作成しようとしていますが、kernprof が機能しない理由がわかりません。サンプルを実行しましたが、問題なく動作しますが、コードがハングします。これが私のコードです:

import networkx as nx
from itertools import combinations

u = ['a','b','c','d']
pc = ['1,23,6,12',
      '2,51,42',
      '3',
      '72,7,2,8']

@profile
def stuff(users, pixels_csv):
    network = nx.Graph()

    for user, pixels in zip(users, pixels_csv):
        pixels = pixels.split(',')
        pixel_combinations = combinations(pixels, 2)

        for edge in pixel_combinations:

            e0 = edge[0]
            e1 = edge[1]
            network.add_edge(e0, e1)

            try:
                if (e0, e1) in network.edges():
                    network[e0][e1]['weight'] += 1

            except KeyError:
                network[e0][e1]['weight'] = 1


        for node in network.nodes():
            if node in pixels:
                try:
                    if user not in network.node[node]['unique_users']:
                        network.node[node]['unique_users'].append(user)

                except KeyError:
                    network.node[node]['unique_users'] = [user]

    return network.nodes()

stuff(u, pc)

次のコマンドを試しましたが、何も起こりません。net.py がデスクトップに表示されます。

comp:Desktop k$ kernprof -l -v net.py

comp:Desktop k$ python /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/kernprof.py -l -v net.py

この例は、次のコマンドで機能します。

comp:Desktop k$ python /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/kernprof.py -l -v primes.py

ファイル名: primes.py

@profile
def primes(n): 
    if n==2:
        return [2]
    elif n<2:
        return []
    s=range(3,n+1,2)
    mroot = n ** 0.5
    half=(n+1)/2-1
    i=0
    m=3
    while m <= mroot:
        if s[i]:
            j=(m*m-3)/2
            s[j]=0
            while j<half:
                s[j]=0
                j+=m
        i=i+1
        m=2*i+3
    return [2]+[x for x in s if x]
primes(100)
4

0 に答える 0