Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-多进程队列未更新_Python_Django_Multiprocessing - Fatal编程技术网

Python Django-多进程队列未更新

Python Django-多进程队列未更新,python,django,multiprocessing,Python,Django,Multiprocessing,我试图同时更新一个队列的两个值,但我的代码以无限循环结束。我在Django视图上运行它,下面的代码运行得很好,但是当我在Django上尝试它时,它只是一直在等待。会发生什么 import multiprocessing from multiprocessing import Process ret = {'algo' : 'hola', 'beto' : 'oka'} def algo(queue): ret = queue.get() ret['algo'] = False

我试图同时更新一个队列的两个值,但我的代码以无限循环结束。我在Django视图上运行它,下面的代码运行得很好,但是当我在Django上尝试它时,它只是一直在等待。会发生什么

import multiprocessing
from multiprocessing import Process

ret = {'algo' : 'hola', 'beto' : 'oka'}

def algo(queue):
    ret = queue.get()
    ret['algo'] = False #This is actually an API call value
    queue.put(ret)

def beta(queue):
    ret = queue.get()
    ret['beto'] = True #This is actually an API call value
    queue.put(ret)


queue = multiprocessing.Queue()
queue.put(ret)
p1 = Process(target=algo, args=(queue,))
p2 = Process(target=beta, args=(queue,))
p1.start()
p2.start()
p1.join()
p2.join()
q = queue.get()
Django Views.py中的代码

ret = {'algo' : 'hola', 'beto' : 'oka'}

def algo(queue):
    ret = queue.get()
    ret['algo'] = False #This is actually an API call value
    queue.put(ret)

def beta(queue):
    ret = queue.get()
    ret['beto'] = True #This is actually an API call value
    queue.put(ret)

def audio(request):
    if request.method == 'POST':
        AUDIO_FILE = path.join(os.getcwd(), "audio.wav")
        # use the audio file as the audio source
        r = sr.Recognizer()
        with sr.AudioFile(AUDIO_FILE) as source:
            audio = r.record(source)

        queue = multiprocessing.Queue()
        queue.put(ret)
        p1 = Process(target=algo, args=(queue,))
        p2 = Process(target=beta, args=(queue,))
        p1.start()
        p2.start()
        p1.join()
        p2.join()
        q = queue.get()
        print(q)

如果不了解子流程中的“API调用”以及如何运行Django,可能很难说。它挂在什么地方?如果您不确定,请输入一些日志。@实际上,API调用与此无关。我尝试用其他值替换它,但仍然卡住了。我现在看到的第一次尝试时,它变得很笨拙。这基本上就是这个问题:它碰巧在Django之外工作,这可能只是运气。这些类型的同步问题通常对周围发生的事情非常敏感。如果不了解子流程中的“API调用”以及如何运行Django,可能很难说。它挂在什么地方?如果您不确定,请输入一些日志。@实际上,API调用与此无关。我尝试用其他值替换它,但仍然卡住了。我现在看到的第一次尝试时,它变得很笨拙。这基本上就是这个问题:它碰巧在Django之外工作,这可能只是运气。这些类型的同步问题通常对周围发生的事情非常敏感。