【发布时间】:2015-10-01 05:39:59
【问题描述】:
如何在 python 的 工作中间 中杀死 remained threads ? 示例代码:
q = Queue.Queue(maxsize=0)
threads = []
max_thread = 10
locker = threading.Semaphore(value=max_thread)
try :
for user in users_list:
t = threading.Thread(target=my_function, args=(user,))
t.setDaemon(True)
threads.append(t)
t.start()
for thread in threads:
q.put(thread)
q.join()
except Exception as errtxt:
print errtxt
这个函数例如用在线程池中,在这个函数中我想收集只有30个用户支付超过5000
def my_function(user):
locker.acquire()
if (user.payment > 5000 ):
collected_users.append(user.id)
if(len(collected_users) >= 30 :
return # <- here i wanna kill other remained threads
q.task_done()
locker.release()
我想我应该在队列中设置一个控制器/
【问题讨论】:
-
您之前问过类似的问题,并已接受答案:stackoverflow.com/questions/26068819/…。发生了什么变化?
-
@Tsyvarev,python中的多处理模块和线程模块有很多不同。
-
哦,是的,我没有注意那个关于流程的老问题。至于线程,你不能直接杀死其他线程,你应该配合它。见,例如那个问题:stackoverflow.com/questions/323972/….
标签: python multithreading python-2.7