网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月17日漏签0天
python吧 关注:475,468贴子:1,970,472
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 5回复贴,共1页
<<返回python吧
>0< 加载中...

multiprocessing遇到的非常奇怪的问题,求解

  • 只看楼主
  • 收藏

  • 回复
  • QFBT_Simi_Py_C
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大概描述一下整体程序:
我写了一个用multiprocessing库的程序,创建有循环的职程作为进程,在jobqueue队列中不断获取任务加以处理,达到条件后自动终止,主程序用for p in processing:p.join(),等待子进程全部自我终止,以进行后续处理。然而,该程序
在投入的初始任务较轻时候,顺利退出,返回主进程。然而,到了一个阈值的时候(但工作量怎么看也不至于崩溃),子进程经过debug发现正确地触发了终止条件,然而join()依然阻塞,进入任务管理器发现这些子进程占用cpu 0 %,是纯纯的僵尸进程,这我非常不解,因为已经正确地触发终止,即使我把开启的进程数量调整到1,也会出现这种状况(僵尸化)。我进入任务管理器,强制关闭子进程,主程序返回,计算结果也是正确的,说明子进程完成了指定任务,只是僵尸化了,无法退出


  • 我是楼上的dad
  • 榜眼
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我只在if __name__ == '__main__': 里用过 multiprocessing,其他的都失败了,放到函数里也失败了。


2025-07-17 19:12:33
广告
  • QFBT_Simi_Py_C
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我现在找到了一种替代解决办法,不再使用join()等待,而是声明一个队列SignQueue,职程结束时候向该队列放入值,做结束信号,之后由主函数声明一个阻塞函数循环访问SignQueue,以监测信号(可以检测余下进程数目),0时自我终止


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回python吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示