Django和多处理

时间:2013-11-16 15:18:46

标签: django multiprocessing

我想使用多处理来进行并行计算。但我发现如果我使用多处理,代码应该包含

if __name__ == '__main__':

或者我会收到错误

PicklingError: Can't pickle <type 'function'>: attribute lookup__builtin__.function failed

我该怎么办?谢谢。

2 个答案:

答案 0 :(得分:0)

你想在django中使用多个过程在哪里?

Django以同步方式处理请求,因此通常在处理请求时执行的大多数任务不应该是处理器密集型的,因为这会导致在将响应返回给用户之前有很大的延迟。

使用像celery:http://www.celeryproject.org/之类的东西来执行后台任务通常是首选的方法,博客条目如下:http://www.turnkeylinux.org/blog/django-celery-rabbitmq

答案 1 :(得分:0)

实际上,文档中所述需要if __name__ == '__main__':https://docs.python.org/2/library/multiprocessing.html#multiprocessing.sharedctypes.Array

在django中,多处理大楼也可以放在函数'handle'中,如下所示:

class Command(BaseCommand):

  def handle(self, *args, **options):
    processes = range(PROCESS_NUM)
    for i in range(PROCESS_NUM):
      processes[i] = Process(target=yourFunc, args=(...))
      processes[i].start()
相关问题