gpt4 book ai didi

python - django 和 Python 代码中的多处理

转载 作者:行者123 更新时间:2023-12-03 12:46:27 26 4
gpt4 key购买 nike

我正在尝试在 Windows 系统上的应用程序中实现多处理。
场景是:
从 GUI 中,当我单击“运行”按钮时,控件会出现一个 python 函数(这不是主要函数)。
现在在这个函数中,我正在运行循环并一次读取/执行多个文件。我希望这同时发生。
但是由于 multiprocessing.process() 需要 __name__ ='__main__' ,我在 multiprocessing() 中的“target = function name”中提到的函数没有被调用。
我怎样才能让它发生。如果多处理似乎是错误的方式,那么还有其他提高代码性能的方法吗?
添加示例代码(请注意,这只是一个伪代码,我添加了高级代码来理解流程,请原谅任何语法错误):
urls.py 文件:

from django.urls import path
from textapp import views

urlpatterns = [
path('execute/',views.functiontomultiprocess),
...
other urls
]
View .py:
def functiontomultiprocess(request):
nprocess = []
for doc in alldocs:
p = multiprocess.Process(function2)
p.start() # start process
nprocess.append(p)

for p1 in nprocess:
p1.join()

最佳答案

任务运行器可以使用,特别是 Celery
通过 Celery 可以创建“任务轮换”:
我的任务.py

from celery import task

@task
def myJob(*args,**kwargs):
# main task
# . . .
my_views.py
from django.shortcuts import render_to_response as rtr

from .tasks import myJob

def view(request):
# view
# . . .
myJob.delay(*args,**kwargs)
return rtr('template.html', {'message': 'Job has been entered'})
调用 .delay 将注册 * myJob * 以供您的一个 * celery * 执行,但不会阻止表示性能。
在工作人员没有空闲之前不会执行任务,因此您应该对进程数量没有问题。

关于python - django 和 Python 代码中的多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64002680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com