2016-10-30 4 views
0

これはおそらく超簡単な答えですが、自分のPythonアプリケーションとパッケージを作成するのは初めてです。私はC++やC#やそのライブラリのような言語にかなり精通しています。2 mains/processesを持つPythonアプリケーションの構造

私は単純な実行可能ファイルのように実行する以外のPythonパッケージを構築しようとしています。私はこのアプリケーションのためのモジュールをサポートしています。これらのモジュールは、単にインスタンス化され呼び出されるクラスです。しかし、私は問題があります。私は2つの主な機能を持っています。この背後に私の理由は、私はクラスの1つをインスタンス化し、その後、このクラス(入力など)に特定の詳細を与えた単純なループで構成されているプログラムの一部を持っている私は ' smartinterface.py 'とsmartinterface.pyには他の主な機能が含まれています。私はこれをどのようにして最高に構成できるのだろうと思っています。 2つの異なるパッケージを作成し、クラスを含むモジュールをリンクする方法を理解する必要があります。どちらのプロセスも同じクラスに依存しているか、私は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と呼ばれる最初のファイルを正常に実行しています。しかし、このプログラムは私のsmartinterface.pyをPopenと呼びます。Popenにはmain関数も含まれています。 startmonitor.pyは本質的には何か(ファイルなど)を連続的にチェックし、ファイルに必要な要件がある場合、別のスクリプトを実行している別のプロセスをスピンアップして、このスクリプトを終了して開始モニターを再開させたいプロセスです。私がこれを行うために見た唯一のきれいな方法は、別のプロセスを作り出すことでした。それは他の方法で行うこともできますが、私は彼らが賢くないと感じます – SDSMTKyzer

関連する問題