API로부터 정보를 가져와 파이썬 스크립트에 대한 액세스를 제공하는 컨텍스트 메뉴를 만드는 파이썬 스크립트를 만들고 있습니다. API 호출 한 조금 느린 실행되는 스레딩을 사용하려는 있지만 내 코드 스레딩을 구현하는 방법을 잘 모르겠습니다. 이 사이트를 스레딩 참조 용으로 사용하고 있습니다. http://www.ibm.com/developerworks/aix/library/au-threadingpython/ 코드의 논리를 이해합니다. 스레딩하려는 모든 메서드에 대한 스레딩 클래스를 작성하고 싶지 않습니다.for 루프에서 파이썬 스레딩
다음은 컨텍스트 메뉴를 만든 다음 반환 된 json을 구문 분석하는 클래스입니다. 실행 명령의 for 루프에 추가해야한다고 생각합니다. 어떤 도움이라도 대단히 감사합니다.
class SyncsnippetsCommand(sublime_plugin.TextCommand):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue
def buildLexerDict(self,snippets):
lexers = snippets[0]['user']['lexers']
lexer_dict = {}
for lexer in lexers:
lexer_dict[lexer] = []
return lexer_dict
def buildsnippetsContextDict(self,snippets,lexer_dict):
snippets_dict = lexer_dict
for snippet in snippets:
snippets_dict[snippet['lexer']].append({"id":str(snippet['id']),
"title":snippet['title']})
return snippets_dict
def run(self, edit):
snippet_url = buildsnippetURL()
snippets_count = 1;
snippets = getsnippets(snippet_url)
context_menu = '['
context_menu += '\n\t{ "caption": "snippets", "id": "file", "children":'
context_menu += '\n\t\t['
if snippets == None:
{"caption":"No snippets available"}
else:
snippets = snippets['objects']
lexers = self.buildLexerDict(snippets)
snippets_dict = self.buildsnippetsContextDict(snippets, lexers)
for j,key in reversed(list(enumerate(reversed(snippets_dict.keys())))):
... loop through JSON and create menu ...
if j == 0:
context_menu += ''
else:
context_menu += ','
context_menu += '\n\t\t]'
context_menu += '\n\t}'
context_menu += '\n]'
f = open(sublime.packages_path() + '\snippetSync\\Context.sublime-menu', 'w')
f.write(context_menu)
f.close
self.view.set_status('snippet', 'snippet Sync: Added ' + str(snippets_count) + ' snippets from your account.')
sublime.set_timeout(lambda: self.view.erase_status('snippet'), 3000)
return
threading.Thread는 SyncsnippetsCommand의 기본 클래스 여야하지만 sublime_plugin.TextCommand 만 포함해야합니다. 나는 스레딩으로 약간만 연주했기 때문에 예외가있을 수 있습니다. – Octipi
통찰력을 고맙게 생각하고 이해합니다. - 특정 시나리오에 대한 최선의 접근 방식을 찾고있을 때 실제로 스레딩을 구현하지 못했음을 알 수 있습니다. 감사. – gregwhitworth