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

标签 python multithreading optimization parallel-processing multiprocessing

我正在尝试在 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/

相关文章:

java - 用于了解 Java 程序性能的 Eclipse 插件

c - 非平凡的 goto 使用(可能击败编译器)

performance - _mm_shuffle_epi8 内在函数的使用

c++ - 如何在 C++ 中混合原子和非原子操作?

java - 带有 BufferedReader 的线程 "Thread-1"java.lang.NullPointerException 中的异常

python - 从 tf.contrib.layers.conv2d 切换到 tf.nn.conv2d

python - 如何使用 matplotlib 绘制复杂的条形图——具有多行条形的多个子图?

java - 如何在一个 AsyncTask 中同时执行多个函数?

python - 为什么给字典的键 `True` 赋值会覆盖同一字典中键 `1` 的值?

python - AttributeError: 'Application' 对象没有属性 'tk'