백그라운드에서 Repl/CLI 및 Feed 명령 실행

백그라운드에서 Repl/CLI 및 Feed 명령 실행

repl을 시작하는 데 오랜 시간이 걸린다고 가정 python하면 별칭을 만들고 python-current "command to run".

답변1

파이썬 배포판에는 이런 종류의 열기를 수행하는 것이 없으며 "배터리 포함"도 없습니다.

Editor와 같은 프로그램은 이런 종류의 일을 처리할 수 있습니다. 왜냐하면 다른 파일을 열 때 무엇을 해야 할지 매우 명확하기 때문입니다. 동일한 실행 파일에 의해 처리되는 새 파일에서 창/탭을 열면 됩니다.

이와 같은 것을 직접 구현하는 것은 어렵지 않지만 첫 번째 명령이 아직 완료되지 않았고 두 번째 명령이 예약되면 어떤 일이 발생하는지 고려해야 합니다.

  • 첫 번째 명령을 중단
  • 두 번째 명령을 대기열에 넣습니다.
  • 병렬로 실행(명령을 기다리는 스레드가 여러 개 있지 않으면 추가 시작 시간이 필요함)

나는 디렉토리, http 요청(Twisted 기반 시스템에서) 및 Zeromq의 파일 검색을 기반으로 모듈을 로드하고 실행하기 위해 Python을 실행하라고 지시했습니다. IMHO 무엇이 적절한지는 시스템에 필요한 다른 것이 무엇인지에 따라 다르며, 저는 항상 효율적이고 오버헤드가 최소화된 것을 선택합니다. 적절하게 인터페이스해야 합니다 python-current.

종종 이는 일부 모듈을 다시 로드하는 것과 결합됩니다(새 명령을 처리하기 위해). 이를 위해 reload()내장된 기능을 사용할 수 있습니다:

import mycommand
# test for a command that requires reloading
reload(mycommand)


참고: 특히 UI 코드로 작업할 때 이 다시 로드가 유용하다고 생각합니다. Python은 Perl과 동등하게 실행 파일을 로드합니다(몇 년 전 내 시스템에서는 0.002초 time python -v). 기본 모듈을 로드하는 데 약 10배 더 오래 걸립니다( time python -c "exit();", 0.025s). But when using UI based programs the whole startup easily grows to several seconds and more. And in that case implementing dynamic command reading and having apython-current`가 의미가 있습니다.

답변2

사용한다면 bash시도해 볼 수 있습니다공동 프로세스. 케쉬도 있어요공동 프로세스, 이와 관련하여 두 쉘이 동일한 기능을 가지고 있는지 확실하지 않습니다. Ksh 버전만 사용해 보았는데(제 고용주는 klunk를 좋아해서 Ksh를 사용합니다) 작동하지만 여러 개의 공동 프로세스를 사용하는 것이 쉽지 않습니다.

Google "ksh coprocess example" 또는 "bash coprocess example"을 검색하면 예제 코드를 찾을 수 있습니다. 모든 것이 매우 직관적이지 않으므로 예제를 사용하여 작업하십시오.

관련 정보