在Django框架中启动多个进程的方法是什么?
前提 tí)
Note: The provided phrase “前提” is already in Chinese and means “premise” or “prerequisite”.
在Django框架中,如果想要在处理过程中启动多个进程并进行并行处理时,下面将解释实现方法。
从多进程中导入池,
如果尝试以常规方式启动多进程,
将会引发Django错误。在Django中,无法基本上在一个进程中启动另一个进程。
实现的方式
在Django内部,无法启动另一个进程,因此可以通过将希望启动的多进程处理视为Django外部的处理来实现启动多个进程。
实施实例
from application.service.xx.xxService import xxService
from multiprocessing import Pool
class FileDownloadServiceImpl(FileDownloadService):
def __init__(self, result_file_num):
self.result_file_num = result_file_num
def mainLogic(self):
try:
##Djangoに関わるimportをここで実施
from application.repository.mdData.fileDownload_repository import FileDownloadRepository
from scrapingSystem.repositoryImple.mdData.fileDownload_repository import FileDownloadRepositoryImple
.....................
partedXlByteListLenCnt = len(self.start_index_list)
pool = Pool(processes=partedXlByteListLenCnt)
pool_result_list = []
args_list = []
for i in range(partedXlByteListLenCnt):
args = (self.xl_byte_data, i, self.start_index_list[i], self.last_index_list[i],)
args_list.append(args)
pool_result_list = pool.map(multiByteParseStringWrapper, args_list)
for pool_result in pool_result_list:
self.process_index_que.append(pool_result[0])
self.tree_list.append(pool_result[1])
......................
return self.byte_in_list
except:
raise
def __twoDevideByteData(self, start_index, last_index):
......................
def multiByteParseString(xl_byte_data, process_index, start_index, last_index):
......................
def multiByteParseStringWrapper(args):
return multiByteParseString(*args)
通过确保与Django完全无关,可以以多进程的方式启动想要的方法,在Django的处理过程中,可以启动多个不同的进程。