以下是一个使用动态队列实现并行编程的示例代码:
import multiprocessing
def worker(queue):
while True:
item = queue.get()
if item is None:
break
# 执行任务
print("Processing item:", item)
if __name__ == '__main__':
# 创建动态队列
queue = multiprocessing.Queue()
# 创建子进程
num_processes = multiprocessing.cpu_count()
processes = []
for _ in range(num_processes):
p = multiprocessing.Process(target=worker, args=(queue,))
p.start()
processes.append(p)
# 添加任务
items = [1, 2, 3, 4, 5]
for item in items:
queue.put(item)
# 添加结束标记
for _ in range(num_processes):
queue.put(None)
# 等待子进程完成
for p in processes:
p.join()
print("All items processed")
在上面的示例中,我们首先创建了一个动态队列 queue
。然后,根据计算机的 CPU 核心数创建了相应数量的子进程,并将队列 queue
作为参数传递给每个子进程的 worker
函数。接下来,我们向队列中添加了一些任务(即待处理的项)。最后,我们向队列中添加了与子进程数量相等的结束标记 None
,以通知每个子进程任务已经全部添加完毕。最后,我们使用 join()
方法等待所有子进程完成任务,并打印出所有项都已处理完毕的消息。
请注意,这只是一个简单的示例,实际的并行编程任务可能更加复杂。在实际的应用中,您可能需要更详细地定义任务和处理逻辑,并使用适当的同步机制(如锁或信号量)来确保数据的一致性和正确性。
上一篇:并行编程中的值语义
下一篇:并行编译多个测试文件