2016-10-30 5 views
0

이것은 아마도 매우 간단한 대답 일지 모르지만 저는 제 자신의 파이썬 응용 프로그램과 패키지를 만드는 것에 익숙하지 않습니다. 나는 C++과 C#과 그들의 라이브러리와 같은 언어에 상당히 익숙하다.2 주/프로세스가있는 Python 응용 프로그램 구조

간단한 실행 파일처럼 실행되도록 python 패키지를 만들려고합니다. 나는 인스턴스화되고 호출되는 클래스 인이 애플리케이션을위한 모듈을 지원한다. 그러나 나는 문제가있다. 나는 두 가지 주요 기능을 가지고있다. 이 이유는 내가 뒤에있는 이유는 클래스 중 하나를 인스턴스화하고이 클래스 (입력 등)에 대한 구체적인 정보를 제공하는 간단한 for 루프로 구성된 프로그램의 한 부분을 가지고 있기 때문에 'Python smartinterface.py '와 smartinterface.py는 다른 주요 기능을 포함합니다. 나는 이걸 어떻게 잘 만들 수 있을지 궁금해. 두 개의 다른 패키지를 만들고 클래스를 포함하는 모듈을 연결하는 방법을 알아야합니까? 두 프로세스가 같은 클래스에 종속되어 있거나 Popen에 문제가 있습니까?

답변

1

그런 시도해보십시오.

import asyncio, random 


loop = asyncio.get_event_loop() 

@asyncio.coroutine 
def second_task(): 
    while True: 
     yield from asyncio.sleep(0.5 + random.random()) 

@asyncio.coroutine 
def main_task(): 
    while True: 
     # do somthing 
     loop.create_task(consume()) 


loop.create_task(main_task()) 
loop.run_forever() 

작업 대기열 (내가 더 나은 생각)를 사용하여 또 다른 예 : 나는 매우 잘 나는 그것을 사용하고 있음을 이해

import asyncio, random 

task_queue = asyncio.Queue() 

@asyncio.coroutine 
def task_producer(): 
    while True: 
     yield from task_queue.put(random.random()) 
     yield from asyncio.sleep(random.random()) 

@asyncio.coroutine 
def task_consumer(): 
    while True: 
     value = yield from task_queue.get() 
     print("returne value: ", value) 


loop = asyncio.get_event_loop() 
loop.create_task(task_producer()) 
loop.create_task(task_consumer()) 
loop.run_forever() 
+0

합니다. startmonitor.py라는 첫 번째 파일이 정상적으로 실행됩니다. 그러나이 프로그램은 Popen과 함께 smartinterface.py를 호출하는데, Popen에는 main 함수가 포함되어 있습니다. startmonitor.py는 기본적으로 무언가 (파일을 말함)를 지속적으로 확인하고 파일에 필요한 요구 사항이있을 때 다른 스크립트를 실행하는 다른 프로세스를 시작하여이 스크립트를 끝내고 startmonitor resume이 가능하도록하려는 프로세스입니다. 이 작업을 수행하는 유일한 방법은 다른 프로세스를 만드는 것입니다. 그것은 다른 방법으로 행해질 수도 있지만, 나는 똑똑하지 않다고 생각합니다. – SDSMTKyzer