在Mac上完成多处理时挂起,但不在Windows上挂起

时间:2017-12-17 04:39:48

标签: python multiprocessing

我有两个开发环境......一台Windows计算机和一台Mac用于旅途中。该脚本在Windows计算机上运行正常,并将循环遍历所有池。但在Mac上,它只是挂起。但是,当我手动将进程计数设置为1时,它确实有效。

这挂起......

def insert_user_request(self, data):
    pool_size = multiprocessing.cpu_count() * 2
    pool = multiprocessing.Pool(processes=pool_size)
    pool.map(self.insert_user, data)

这有效......

def insert_user_request(self, data):
    pool_size = 1
    pool = multiprocessing.Pool(processes=pool_size)
    pool.map(self.insert_user, data)

池调用的函数将数据插入数据库,果然,数据正常。因此,这似乎是问题的“关闭”池。

1 个答案:

答案 0 :(得分:1)

在原始问题的评论中归功于Antti Haapala,但是spawn start方法有效。

def insert_user_request(self, data):
    multiprocessing.set_start_method('spawn')
    pool_size = multiprocessing.cpu_count() * 2
    pool = multiprocessing.Pool(processes=pool_size)
    pool.map(self.insert_user, data)