我正在尝试在windows系统上的应用程序中实现多处理
情况是: 在GUI中,当我单击“Run”按钮时,控制会转到python函数(它不是主函数)
现在,在这个函数中,我运行循环并一次读取/执行多个文件。我希望这一切同时发生
但是由于multiprocessing.process()需要__name__ ='__main__'
,因此没有调用multiprocessing()中“target = function name
”中提到的函数
我怎样才能做到。如果多处理似乎是错误的方式,那么有没有其他方法来提高代码性能
添加示例代码(请注意,这只是一个psudo代码,我添加了高级代码来理解流程,请原谅任何语法错误):
URL.py文件:
from django.urls import path
from textapp import views
urlpatterns = [
path('execute/',views.functiontomultiprocess),
...
other urls
]
views.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()
这太长,无法在注释中指定,因此:
同样,我在Django方面没有专业知识,但我认为这不会在Windows或Linux/Unix上造成问题。但是,您没有指定所请求的平台但是,此外,您提供的代码完成的很少,因为您的循环创建了一个进程,并在创建下一个进程之前等待它完成。最终,一次运行的进程不会超过一个,因此没有并行性。要更正此问题,请尝试以下操作:
或者,如果你想使用游泳池,你可以选择。这将使用
concurrent.futures
模块:这将使用
multiprocessing
模块:现在您只需试试看。
任务运行程序可以使用,特别是Celery
通过芹菜,可以创建“任务轮换”:
my_task.py
my_views.py
调用.delay将注册*myJob*以获得您的*芹菜*,但不会阻止表示性能
直到工作人员没有空闲,任务才会执行,因此您应该不会遇到进程数量方面的问题
相关问题 更多 >
编程相关推荐