Как получить имя файла __ основной __ модуль в Python?

Ответ состоял в том, чтобы использовать нумбу. Вот как теперь выглядит код:

import numpy as np
from numba import jit
@jit(nopython=True)
def houghLines(edges, dTheta, threshold):
    imageShape = edges.shape
    imageDiameter = (imageShape[0]**2 + imageShape[1]**2)**0.5
    rhoRange = [i for i in range(int(imageDiameter)+1)]
    thetaRange = [dTheta*i for i in range(int(-np.pi/(2*dTheta)), int(np.pi/dTheta))]
    cosTheta = []
    sinTheta = []
    for theta in thetaRange:
        cosTheta.append(np.cos(theta))
        sinTheta.append(np.sin(theta))
    countMatrixSize = (len(rhoRange), len(thetaRange))
    countMatrix = np.zeros(countMatrixSize)

    eds = []
    for (x,y), value in np.ndenumerate(edges):
        if value > 0:
            eds.append((x,y))

    for thetaIndex in range(len(thetaRange)):
        theta = thetaRange[thetaIndex]
        cos = cosTheta[thetaIndex]
        sin = sinTheta[thetaIndex]
        for x, y in eds:
            targetRho = x*cos + y*sin
            closestRhoIndex = int(round(targetRho))
            countMatrix[closestRhoIndex, thetaIndex] += 1
    lines = []
    for (p,t), value in np.ndenumerate(countMatrix):
        if value > threshold:
            lines.append((p,thetaRange[t]))
    return lines

Это сделало его как минимум в 50 раз быстрее.

63
задан Matt Fenwick 1 February 2012 в 03:03
поделиться

3 ответа

import __main__
print __main__.__file__
72
ответ дан ironfroggy 24 November 2019 в 16:17
поделиться

Возможно, это добьется цели:

import sys
from os import path
print path.abspath(sys.modules['__main__'].__file__)

Примечание, что для безопасности необходимо проверить, имеет ли __main__ модуль __file__ атрибут. Если это будет динамично создано или будет просто выполнено в интерактивной консоли Python, то это не будет иметь __file__:

python
>>> import sys
>>> print sys.modules['__main__']
<module '__main__' (built-in)>
>>> print sys.modules['__main__'].__file__
AttributeError: 'module' object has no attribute '__file__'

А простой hasattr () проверка добьется цели для принятия мер против сценария 2, если это будет возможностью в приложении.

35
ответ дан Jarret Hardie 24 November 2019 в 16:17
поделиться

Код Python ниже обеспечивает дополнительную функциональность, включая которую он работает беспрепятственно с py2exe исполняемые файлы.

я использую подобный код, чтобы любить, когда это находит пути относительно под управлением сценария, иначе __main__. как дополнительное преимущество, это работает межплатформенное включая Windows.

import imp
import os
import sys

def main_is_frozen():
   return (hasattr(sys, "frozen") or # new py2exe
           hasattr(sys, "importers") # old py2exe
           or imp.is_frozen("__main__")) # tools/freeze

def get_main_dir():
   if main_is_frozen():
       # print 'Running from path', os.path.dirname(sys.executable)
       return os.path.dirname(sys.executable)
   return os.path.dirname(sys.argv[0])

# find path to where we are running
path_to_script=get_main_dir()

# OPTIONAL:
# add the sibling 'lib' dir to our module search path
lib_path = os.path.join(get_main_dir(), os.path.pardir, 'lib')
sys.path.insert(0, lib_path)

# OPTIONAL: 
# use info to find relative data files in 'data' subdir
datafile1 = os.path.join(get_main_dir(), 'data', 'file1')

, Надо надеяться, вышеупомянутый пример кода может обеспечить дополнительное понимание, как определить путь к под управлением сценарию...

15
ответ дан popcnt 24 November 2019 в 16:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: