私はしばらくの間問題に苦しんでいます。メインループを使用する小さなスクリプトを作成しています。これは、ユーザーの注意が必要なプロセスです。ユーザーはステップに応答し、いくつかの機能を使用するといくつかの魔法が起こります
これに加えて、特定のキーを押すなどの特定のイベントについてコンピューターシステムを監視する別のプロセスを生成したいと考えています。これらのイベントが発生すると、ユーザーが正しい値を指定した場合と同じ機能が起動されます。
そのため、次の 2 つのプロセスを作成する必要があります。 - メイン ループ (ユーザーの操作を可能にする) - 特定のイベントを検索して反応するバックグラウンドの "イベント スキャナー"。
メイン ループとデーモン マルチプロセッシング プロセスを起動して、これを試します。問題は、バックグラウンド プロセスを起動すると起動するが、その後メイン ループを起動しないことです。より明確にするために、すべてを少し単純化しました。
import multiprocessing, sys, time
def main_loop():
while 1:
input = input('What kind of food do you like?')
print(input)
def test():
while 1:
time.sleep(1)
print('this should run in the background')
if __name__ == '__main__':
try:
print('hello!')
mProcess = multiprocessing.Process(target=test())
mProcess.daemon = True
mProcess.start()
#after starting main loop does not start while it prints out the test loop fine.
main_loop()
except:
sys.exit(0)