python多进程

因为python的线程是假线程,所有的线程都是共用一个CPU的,为了避免这个问题,所以需要用到多进程,multiprocessing

关于multiprocessing的用法也比较简单

worker = multiprocessing.Process(target=workFunc, args=('a', 'b'))

worker.start()

# 阻塞1s执行下步,不输入参数就一直阻塞等进程结束
worker.join(1)


然后需要用到共享资源,出现了一系列的问题,后来终于查到是multiprocessing.Queue的问题,就是这个队列用来判断empty的函数在里面有东西的时候,有时候居然会返回true,后来查到这个Queue里面自带semaphore,就去掉了自己在外层添加的信号量,然后直接不判空,就直接Queue.get()就好,里面自带信号量是会阻塞的,然后又查到可以设置timeout的,然后直接用Queue.get(true, 0.1),意思是0.1秒之后会抛出一个异常,我只要收到这个异常然后返回None就行了


def getMsg(block = true, timeout=None):
  try:
    result = inQueue.get(block, timeout)
  except:
    result = None
  return result

这样就简单解决了多线程共享资源的问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值