PEP 8 состояние:Использование многопроцессорности в Python, каков правильный подход для операторов импорта?
Импорт всегда помещается в верхней части файла, только после любого модуля комментариев и строки документации, и перед модулем глобал и констант.
Однако, если класс/метод/функция, которые я импортирую, используется только дочерним процессом, то, действительно, эффективнее делать импорт, когда это необходимо? Мой код в основном:
p = multiprocessing.Process(target=main,args=(dump_file,))
p.start()
p.join()
print u"Process ended with exitcode: {}".format(p.exitcode)
if os.path.getsize(dump_file) > 0:
blc = BugLogClient(listener='http://21.18.25.06:8888/bugLog/listeners/bugLogListenerREST.cfm',appName='main')
blc.notifyCrash(dump_file)
main() является основным приложением. Этим функциям требуется много импорта для запуска, и они занимают некоторое пространство в пространстве (+/- 35 МБ). Поскольку приложение запускается в другом процессе, импорт выполняется дважды после PEP 8 (один раз родительским процессом, а другой - дочерним процессом). Следует также отметить, что эту функцию нужно вызывать только один раз, когда родительский процесс ожидает, чтобы приложение сработало и оставило код выхода (благодаря faulthandler). Так что я закодирован импорт внутри основной функции, как это:
def main(dump_file):
import shutil
import locale
import faulthandler
from PySide.QtCore import Qt
from PySide.QtGui import QApplication, QIcon
вместо:
import shutil
import locale
import faulthandler
from PySide.QtCore import Qt
from PySide.QtGui import QApplication, QIcon
def main(dump_file):
Есть ли «стандартный» способ справиться с импортом сделана с использованием многопроцессорной обработки?
PS: я видел это sister question
введите импорт вверху, следуйте по PEP 8 – tinySandy
Как узнать, сколько памяти вы сохраняете с помощью предлагаемого вами метода? – gardenhead
Я вижу, сколько памяти каждый процесс занимает с помощью диспетчера задач Windows. Следуя предложенному методу, родительский процесс занимает 6 Мбайт, а после PEP 8 - 36 Мб. –