0
私はマルチプロセッシングの使い方を学ぶために単純なpythonスクリプトを試作しています。私はバックグラウンドで、ダミーデータを生成し、ユーザーがまだコマンドを入力できる間にキューに入れるプロセスを持っていたいと思います。プロセスはPythonで起動しません
は、ここに私のコードです:
from multiprocessing import Process
from multiprocessing import Queue
import random
import os
global run
def waitForStart(q):
global run
print("(h for help)")
while run == 0:
response = input("Enter a command: \n")
if response == "h":
print("h - help\ns - select a profile\no - output a profile\nd -
download a profile\nd - display selected profile\nr - run selected profile")
if response == "r":
run = 1
beginInterface(q)
print("r")
def generateData(q):
data = random.randint(0,100)
q.put(data)
def beginControl(q):
print("bcontrol")
while run == 1:
generateData(q)
displayData()
adjustOutputs()
logData()
print("Finished Control")
def beginInterface(q):
global run
p.start()
print("binterface")
while run == 1:
response = input("pause? (y/n)\n")
print(p.is_alive())
if response == 'y':
run = 0
def displayData():
print(q.get())
run = 0
q = Queue()
p = Process(target=beginControl , args=(q,))
waitForStart(q)
is_alive呼び出しがp.startは()の数行を前に呼ばれているにもかかわらず、falseを返すので、私は混乱しています。
感謝を!私はパイプ上で少しぼやけているので、そのトピックを読んでみましょう。私は、プロセスをユーザー入力によって制御されたループで実行させようとしています。私がしたいのは、ユーザーがまだコマンドを入力できる間に、プロセスが継続的に画面にデータを生成し、印刷することです。最終的に、バックグラウンドプロセスがセンサからのデータを記録するLabViewに接続されたコードにこれを拡大したいと思っています。ユーザーはフロントエンドでプログラムを制御できる必要があります。 – egemnay
@egemnay、上記のように、必要なのはプロセスではなくスレッドです - https://docs.python.org/2/library/threading.html?highlight=threading#module-threading – droravr