【问题标题】:Multiprocessing a Python function in a loop在循环中对 Python 函数进行多处理
【发布时间】:2023-02-15 20:45:45
【问题描述】:

我在使用此功能时表现不佳:

def update(self, request):
    result = "Eat fruits!"
    status_code = status.HTTP_200_OK
    fruits = Fruits.objects.all
    for fruit in fruits:
        try:
            models.Fruits.save(fruits, call_basket=True)
        except:
            pass
    return JsonResponse(result, status_code)

models.Fruits.save(fruits, call_basket=True) 这一行非常慢,所以我想使用 muliprocessing 来加速这个过程。尽管有文档,但我不知道如何将它放入我的代码中。

在这种情况下如何使用multiprocessing.Process

谢谢。

【问题讨论】:

    标签: python


    【解决方案1】:

    您需要使用多处理将每个组分开。

    分组过程中分离每个水果的修改代码:

    from multiprocessing import Process
    from django.http import JsonResponse
    from rest_framework import status
    from .models import Fruits
    
    def update(self, request):
        result = "Eat fruits!"
        status_code = status.HTTP_200_OK
        fruits = Fruits.objects.all()
    
        processes = []
        for fruit in fruits:
            p = Process(target=save_fruit, args=(fruit,))
            p.start()
            processes.append(p)
    
        for p in processes:
            p.join()
    
        return JsonResponse(result, status_code)
    
    def save_fruit(fruit):
        try:
            fruit.save(call_basket=True)
        except:
            pass
    

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多