python 并行执行多个函数_用python的多处理并行处理一个具有多个列表参数的函数...

你不能在进程之间共享内存(从技术上讲,你可以在基于fork的系统上,只要你不改变对象/影响ref count,这在现实世界中很少发生),你可以选择使用一个共享的结构(其中大多数在^{}下可用),这样可以为你进行同步/更新,或者只传递处理所需的数据,然后将结果缝合在一起。在

你的例子很简单,两种方法都可以在没有严重处罚的情况下工作,所以我只想找一位经理:import multiprocessing

import functools

def your_function(list1, list2, iterable):

i1 = 2 * iterable

i2 = 2 * iterable + 1

list1[i1] *= 2

list2[i2] += 2

if __name__ == "__main__": # a multi-processing guard for cross-platform use

manager = multiprocessing.Manager()

l1 = manager.list([1, 1, 1, 1, 1])

l2 = manager.list([2, 2, 2, 2, 2])

func = functools.partial(your_function, l1, l2)

pool = multiprocessing.Pool()

pool.map(func, [0, 1])

print(l1, l2) # [2, 1, 2, 1, 1] [2, 4, 2, 4, 2]

或者,如果您的用例更有利于在处理后缝合数据:

^{pr2}$

也就是说,输出不是您列出/期望的,而是基于您的函数应该发生的结果。在

另外,如果您的情况如此简单,那么您可能需要完全避开多处理—多处理所增加的开销(加上管理器同步)是不值得的,除非your_function()执行一些真正的CPU密集型任务。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值