我想使用多处理来进行并行计算。但我发现如果我使用多处理,代码应该包含
if __name__ == '__main__':
或者我会收到错误
PicklingError: Can't pickle <type 'function'>: attribute lookup__builtin__.function failed
我该怎么办?谢谢。
答案 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。
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()