Maison  >  Article  >  développement back-end  >  Quelle est la méthode pour créer une file d’attente dans le pool de processus Python ?

Quelle est la méthode pour créer une file d’attente dans le pool de processus Python ?

PHPz
PHPzavant
2024-03-01 17:04:021140parcourir

Quelle est la méthode pour créer une file d’attente dans le pool de processus Python ?

Dans python, vous pouvez utiliser le module multiprocessing pour créer des pools de processus et des files d'attente.

Voici un exemple de code à utiliser multiprocessing.Poolmultiprocessing.Queue pour créer des pools de processus et des files d'attente :

import multiprocessing

# 创建进程池
pool = multiprocessing.Pool(processes=4)

# 创建队列
queue = multiprocessing.Queue()

# 将任务添加到队列中
for i in range(10):
queue.put(i)

# 定义任务函数
def process_task(item):
# 处理任务
result = item * 2
return result

# 使用进程池执行任务
results = []
while not queue.empty():
item = queue.get()
result = pool.apply_async(process_task, args=(item,))
results.append(result)

# 等待所有任务完成
pool.close()
pool.join()

# 获取任务结果
for result in results:
print(result.get())

Dans l'exemple de code ci-dessus, ajoutez d'abord à la file d'attente en utilisant la méthode multiprocessing.Pool创建了一个拥有4个进程的进程池,然后使用multiprocessing.Queue创建了一个队列。任务通过queue.put().

Ensuite, une méthode de fonction de tâche process_task,该函数用于处理任务。在任务处理过程中,可以使用queue.get() est définie pour retirer les tâches de la file d'attente.

Enfin, utilisez pool.apply_async()方法将任务函数process_task提交给进程池执行,并将结果保存在resultslist. Les processus du pool de processus supprimeront automatiquement les tâches de la file d'attente et les exécuteront.

Enfin, utilisez la méthode pool.close()方法关闭进程池,并使用pool.join() pour attendre que toutes les tâches soient terminées.

Notez que multiprocessing.Queue est une file d'attente multiprocessing.Queue是进程安全的队列,可以在多个进程之间共享数据。而使用普通的queue.Queuesafe

de processus qui peut partager des données entre plusieurs processus. L'utilisation de queue.Queue ordinaire pour partager des données entre plusieurs processus entraînera des exceptions. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer