繁体   English   中英

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

[英]How can I make sure that two function calls are always made consecutively with multiple threads in Python?

我这样使用Pathos:

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

Pool().map(foo, data)

我希望将fn1fn2作为一个原子操作执行,以使没有线程可以按fn1, fn1, fn2, fn2类的顺序生成函数调用。

您需要使用文档中描述的锁。

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])

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM