按身份杀死一条Python

2024-10-01 00:31:04 发布

您现在位置:Python中文网/ 问答频道 /正文

Greenlet.spawn创建文档中定义的Greenlet的新实例。我有下面的代码,我想通过它的id杀死一个绿色的

import gevent
from gevent import Greenlet
from gevent import getcurrent

class BidTask(Greenlet):
    """ A new bid task creates a new thread when initialized """
    def __init__(self, bid):
        Greenlet.__init__(self)
        self.bid = bid

    def task(self):
      while True:
        print("Running %r" % [self.bid, id(getcurrent())])
        gevent.sleep(10) # sleep for 10 secs
        print("Running %r" % [self.bid, id(getcurrent())])

    def _run(self):
        self.task()

g = BidTask("Bid 1")
g.spawn("Bid 1") # a new instance of Greenlet is created

g2 = BidTask("Bid 2")
g2.spawn("Bid 2") # a new instance of Greenlet is created

gevent.joinall([g, g2])


# Elsewhere in another module
class Outsider(object):
  def kill(self, id):
    Greenlet.registry(id).kill() 

Outsider().kill(1234) # How to achieve this?

谢谢你的帮助。在


Tags: importselfidnewtaskdefgeventgreenlet