Python Slow с macOS Мохаве 10.14 - PullRequest
       20

Python Slow с macOS Мохаве 10.14

0 голосов
/ 12 декабря 2018

Я использую Python 2.7.3 на недавно установленной macOS 10.14 (Mojave).Код работает в Nuke от Foundry.

a=nuke.selectedNode()
b=a['file'].value()
#b now has path to some file
u=os.path.split(b) [0]
u = os.path.normpath (u)
if u != ".":
    subprocess.Popen(['open', '-R', '%s' % (u)])

Я пытаюсь открыть окно Finder, где находится файл.В предыдущей версии macOS он мгновенно открывал бы Finder.С последним обновлением требуется 30-60 секунд, чтобы открыть (иногда это даже не работает).

Любая помощь, пожалуйста.Спасибо.

1 Ответ

0 голосов
/ 07 июня 2019

После тщательного изучения я обнаружил, что такая задержка открытия системного каталога с помощью команды, отправленной из редактора сценариев NUKE 11.3v4 в macOS Mojave 10.14.5 с использованием класса subprocess.Popen(), не является ни проблемой macOS, ниСам вопрос Python.Я пытался вызвать не только класс subprocess.Popen() с включенной защитой целостности системы в Mojave или когда SIP был отключен (см. здесь , как включить и отключить SIP), но также пробовал использовать такие устаревшие методы, какos.popen() и commands.getoutput().

Для этого теста я использовал следующий код:

import nuke
from os import name, popen
from sys import platform
from subprocess import Popen
from os.path import abspath, join, dirname
from commands import getoutput

n = nuke.toNode('Read1')['file'].value()

if name == 'posix' and platform == 'darwin':
    path = abspath(join(dirname(n)))
    command = "open %s" % path

    if path is not ".":
        # commands.getoutput() method is deprecated since Python 2.6 
        # But it's still working in Python 2.7...
        ''' It takes 21 second to open a directory using getoutput() '''
        getoutput(command)

        # os.popen() method is deprecated since Python 2.6 
        # But it's still working in Python 2.7...
        ''' It takes 21 second to open a directory using popen() '''
        popen(command)

        # subprocess.Popen() class is a working horse now...
        ''' It takes 21 second to open a directory using Popen() '''
        Popen(command, shell=True)

Независимо от того, какой системный метод или класс я использовал в Мохаве, это заняло 21 секунду (я работаю на MBP 15 ”2017), чтобы открыть нужную папку с помощью команды open.

Итак, я могу заключить, что этот недостаток произошел от разработчиков The Foundry.Я полагаю, что в будущем выпуске NUKE 12 для macOS 10.15 Catalina эти методы будут намного лучше адаптированы.

Кроме того, вы можете найти все методы и классы Python, которые вы можете использовать из NUKE, в /Applications/Nuke11.3v4/Nuke11.3v4.app/Contents/Frameworks/Python.framework/Versions/2.7/lib/python2.7/

...