如何确保在Python中使用多个线程连续进行两个函数调用?

时间:2017-05-09 19:11:46

标签: python multithreading pathos

我正在使用像这样的Pathos:

from pathos.multiprocessing import ProcessingPool as Pool
def foo(bar):
   fn1(bar)
   fn2(bar)

Pool().map(foo, data)

我希望fn1fn2作为一个原子操作执行,这样任何线程都不能像fn1, fn1, fn2, fn2这样的序列生成函数调用。

1 个答案:

答案 0 :(得分:1)

您需要使用documentation中描述的锁。

def foo(lock, bar):
    lock.acquire()
    try:
       fn1(bar)
       fn2(bar)
    finally:
        lock.release()

if __name__ == '__main__':
    lock = Lock()
    Pool().map(foo, [(l, d) for d in data])

但是,如果您不想并行调用函数,为什么要使用多处理?