代码如下所示:
class workers1(Thread):
... def __init__(self):
... Thread.__init__(self)
... def run(self):
... ...do some stuff
class workers2(Thread):
... def __init__(self):
... Thread.__init__(self)
... def run(self):
... ...do some stuff
if __name__ == "__main__":
... start workers
while True:
print "Number of threads active", threading.activeCount()
print "Number of worker1 threads", ?????, "Number of worker2 threads", ?????
有没有一种方法可以通过发起类来获取活动线程的数量?
这是对Doug
Hellman的多处理ActivePool示例代码(使用线程)的较小修改。这个想法是让您的工作人员在一个池中注册自己,使用线程锁来协调他们对活动目录的修改:
import threading
import time
import random
class ActivePool(object):
def __init__(self):
super(ActivePool, self).__init__()
self.active=[]
self.lock=threading.Lock()
def makeActive(self, name):
with self.lock:
self.active.append(name)
def makeInactive(self, name):
with self.lock:
self.active.remove(name)
def numActive(self):
with self.lock:
return len(self.active)
def __str__(self):
with self.lock:
return str(self.active)
def worker(pool):
name=threading.current_thread().name
pool.makeActive(name)
print 'Now running: %s' % str(pool)
time.sleep(random.randint(1,3))
pool.makeInactive(name)
if __name__=='__main__':
poolA=ActivePool()
poolB=ActivePool()
jobs=[]
for i in range(5):
jobs.append(
threading.Thread(target=worker, name='A{0}'.format(i),
args=(poolA,)))
jobs.append(
threading.Thread(target=worker, name='B{0}'.format(i),
args=(poolB,)))
for j in jobs:
j.daemon=True
j.start()
while threading.activeCount()>1:
for j in jobs:
j.join(1)
print 'A-threads active: {0}, B-threads active: {1}'.format(
poolA.numActive(),poolB.numActive())
产量
Now running: ['A0']
Now running: ['B0']
Now running: ['A0', 'A1']
Now running: ['B0', 'B1']
Now running: ['A0', 'A1', 'A2']
Now running: ['B0', 'B1', 'B2']
Now running: ['A0', 'A1', 'A2', 'A3']
Now running: ['B0', 'B1', 'B2', 'B3']
Now running: ['A0', 'A1', 'A2', 'A3', 'A4']
Now running: ['B0', 'B1', 'B2', 'B3', 'B4']
A-threads active: 4, B-threads active: 5
A-threads active: 2, B-threads active: 5
A-threads active: 0, B-threads active: 3
A-threads active: 0, B-threads active: 3
A-threads active: 0, B-threads active: 3
A-threads active: 0, B-threads active: 3
A-threads active: 0, B-threads active: 3
A-threads active: 0, B-threads active: 0
A-threads active: 0, B-threads active: 0
A-threads active: 0, B-threads active: 0
问题内容: 我有以下代码片段: 在这里,如何在不创建线程类实例的情况下为线程调用方法? 问题答案: 您已经在创建Thread类的实例-您对此不做任何事情。您甚至 可以不使用局部变量 来 调用: …但是我个人通常会将其分配给局部变量,然后执行您想要执行的其他任何操作(例如,设置名称等),然后启动它:
我想这是一个标准的知识问题,但是是否会以线程形式运行? 我想要的是与生产者/消费者的并发会话,这些会话编写/监听他们的特定队列。我已经尝试通过将连接传递给线程来编写一个自定义线程,但是当我创建生产者时,我遇到了一个错误,“我不能在未注册的会话上启动生产者”。
当通过Android Studio运行配置键入启动动态特性模块中的时,我得到以下警告:中声明。(因为它是在动态特性模块的中声明的)。供参考,这是正在使用的库: 运行配置显示并部署了这两个模块,但它只识别来自基础模块的活动。如何在动态特性模块中启动活动? 边注:尝试安装已部署的功能模块时,似乎不会安装: 其中表示(可能是因为它是调试构建);尽管如此,应该找到部署的功能模块...但它没有找到。似乎是这
问题内容: 在我的控制器中,当我需要活动(登录)用户时,我正在执行以下操作以获取UserDetails实现: 它工作正常,但我认为Spring在这种情况下可以使生活更轻松。有没有办法将自动接线连接到控制器或方法中? 例如,类似: 但是我得到了,而不是得到了? 我正在寻找一种优雅的解决方案。有任何想法吗? 问题答案: 序言:从Spring-Security 3.2开始,此答案的末尾描述了一个不错的注
问题内容: 我试图编写一个文件监视器,它将检查文件是否添加了新行,该监视器实际上是一个线程,它将始终由randomaccessfile读取该行。 这是监视器的核心代码: 这是一些帮助类: 这是调用监视器的示例: 现在,我的问题是,如果我仅调用以下代码,代码就可以很好地工作: 这将监视文件的行追加,并通知侦听器。 但是,当我致电: 这意味着我想监视另一个文件而不是之前。 因此,在Monitor中,我