簡體   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