多线程和多进程通过队列进行数据交换代码模板

from multiprocessing import Pool, Manager
import threading
import time
import random
import os
def add(q):
while True:
num = random.randint(1,100)
q.put(num)
print("线程 A 往队列中写入了 %d" % num)
print(" 当前队列中的任务数:%d" % q.qsize())
time.sleep(0.1)
if q.full():
print("当前队列中的任务数已满,睡觉10s")
time.sleep(10)
def run(q):
while True:
print(" 当前队列中的任务数:%d" % q.qsize())
if q.qsize() > 0:
qqqq_info = q.get()
print("子进程ID:%d 处理了队列中的一个数据 %d" % (os.getpid(), qqqq_info))
time.sleep(1)
else:
print("子进程ID:%d 发现队列中不存在任务,睡觉5s" % os.getpid())
time.sleep(5)
if __name__ == "__main__":
m = Manager()
q = m.Queue(50)
p = Pool(4)
threading.Thread(target=add, args=(q,)).start() # 写入
while True:
try:
for i in range(10):
print(1111111)
p.apply_async(run, args=(q,))
print(2222222)
p.close()
p.join()
except:
pass
posted @   zpchcbd  阅读(162)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示