在Python中,可以使用multiprocessing
库来实现多进程编程。为了同步进程,你可以使用以下方法:
Lock
或Semaphore
:Lock
和Semaphore
是multiprocessing
库提供的同步原语,可以用来确保在同一时间只有一个进程可以访问共享资源。
示例:使用Lock
同步两个进程
import multiprocessing
def worker(lock, i):
lock.acquire()
print(f"Process {i} is working")
lock.release()
if __name__ == "__main__":
lock = multiprocessing.Lock()
processes = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(lock, i))
processes.append(p)
p.start()
for p in processes:
p.join()
Queue
或Pipe
:Queue
和Pipe
是multiprocessing
库提供的线程安全的数据结构,可以用来在进程之间传递数据。
示例:使用Queue
同步两个进程
import multiprocessing
def worker(queue):
queue.put("Hello from process")
if __name__ == "__main__":
queue = multiprocessing.Queue()
processes = []
for i in range(2):
p = multiprocessing.Process(target=worker, args=(queue,))
processes.append(p)
p.start()
for p in processes:
p.join()
print(queue.get())
Event
:Event
是multiprocessing
库提供的一种同步原语,可以用来通知进程某个事件已经发生。
示例:使用Event
同步两个进程
import multiprocessing
def worker(event):
event.wait() # 等待事件被设置
print("Process is working")
if __name__ == "__main__":
event = multiprocessing.Event()
processes = []
for i in range(2):
p = multiprocessing.Process(target=worker, args=(event,))
processes.append(p)
p.start()
event.set() # 设置事件
for p in processes:
p.join()
这些方法可以帮助你在多进程编程中实现同步。你可以根据具体需求选择合适的方法来同步进程。