Multiprocessing.Queue 没有输出
No output from Multiprocessing.Queue
我正在尝试使用队列从多处理进程中获取变量。我试过查找为什么这不起作用,但我似乎无法找到我做错了什么。以下是我正在尝试做的简化版本。它仍然不打印任何东西。请帮忙。
import multiprocessing
q = multiprocessing.Queue()
def test(q):
q.put(1)
p = multiprocessing.Process(target=test, args=(q,))
p.start()
while not q.empty():
print(q.get())
以上过于简单化了。该程序的代码看起来更像下面的代码。完整版将使用 Open-CV2 对视频流进行模板匹配,如果找到匹配则发回。
import multiprocessing as mp
def test_process():
q.put("image recognition results!")
q = mp.Queue()
p_script = mp.Process(target=test_process, args=(q,))
def image_recognition():
global p_script
if not p_script.is_alive():
p_script = mp.Process(target=test_process, args=(q,))
p_script.start()
while not q.empty():
print(q.get())
#This will be while true, with various breakout conditions
for _ in range(0, 50):
image_recognition()
这对我来说似乎很不合理,但作为编程新手,我还没有想出更好的方法来 运行 在不阻止 GUI 事件的情况下进行图像识别。如果还有其他更好的路线,我洗耳恭听
以下是您需要如何在 Python 中使用多处理:
import multiprocessing
def test(q):
q.put(1)
if __name__=="__main__":
q = multiprocessing.Queue()
p = multiprocessing.Process(target=test, args=(q,))
p.start()
while True:
print(q.get())
请记住,每个新进程都会重新加载您的主文件,主文件会从头开始运行。任何您不想重复的内容都需要放在 __name__
受保护的块中。这将打印“1”,然后等待永远不会出现的更多输入,因此您需要 Ctrl-C 它。
我正在尝试使用队列从多处理进程中获取变量。我试过查找为什么这不起作用,但我似乎无法找到我做错了什么。以下是我正在尝试做的简化版本。它仍然不打印任何东西。请帮忙。
import multiprocessing
q = multiprocessing.Queue()
def test(q):
q.put(1)
p = multiprocessing.Process(target=test, args=(q,))
p.start()
while not q.empty():
print(q.get())
以上过于简单化了。该程序的代码看起来更像下面的代码。完整版将使用 Open-CV2 对视频流进行模板匹配,如果找到匹配则发回。
import multiprocessing as mp
def test_process():
q.put("image recognition results!")
q = mp.Queue()
p_script = mp.Process(target=test_process, args=(q,))
def image_recognition():
global p_script
if not p_script.is_alive():
p_script = mp.Process(target=test_process, args=(q,))
p_script.start()
while not q.empty():
print(q.get())
#This will be while true, with various breakout conditions
for _ in range(0, 50):
image_recognition()
这对我来说似乎很不合理,但作为编程新手,我还没有想出更好的方法来 运行 在不阻止 GUI 事件的情况下进行图像识别。如果还有其他更好的路线,我洗耳恭听
以下是您需要如何在 Python 中使用多处理:
import multiprocessing
def test(q):
q.put(1)
if __name__=="__main__":
q = multiprocessing.Queue()
p = multiprocessing.Process(target=test, args=(q,))
p.start()
while True:
print(q.get())
请记住,每个新进程都会重新加载您的主文件,主文件会从头开始运行。任何您不想重复的内容都需要放在 __name__
受保护的块中。这将打印“1”,然后等待永远不会出现的更多输入,因此您需要 Ctrl-C 它。