首页 > 代码库 > 优美地启动多线程[Python]
优美地启动多线程[Python]
python在多线程时,假如写了一个叫iamthreading的继承了多线程的类,如何启动它,就是个问题了。
这是什么问题呢?启动不这样嘛?
for i in xrange(threads_num): t = iamthreading() threads.append(t) for i in xrange(threads_num): threads[i].start() for i in xrange(threads_num): threads[i].join()
但是,不觉得太难看了吗?长久使用后,无法忍受,太难看了!
于是来个潇洒的->
while 1: iamthreading().start()一气呵成,可是,这样无法中止程序运行,停不下来,不满意。
于是,我这么写:
threads = [iamthreadingr() for i in xrange( threads_num )] if [(j.setDaemon( True ), j.start()) for j in threads] == [i.join() for i in threads]: print 'all wars are civil wars,because all men are brothers.'
借此摆脱难看的for排比句,但是看到 "=="等号,会不会右边的只计算了一个发现不等,就进入下一步了呢?
看看python会不会这么做:
>>> from Queue import Queue >>> q = Queue(0) >>> q.put(9) >>> q.put(8) >>> q.put(7) >>> q.put(6) >>> if [1, 2, 3] == [q.get() for i in xrange(3)]: ... print "hei hei" ... >>> q.get() 6 >>>看来好像不会,python会产生完整个list再去比较。
再试一试:
>>> from Queue import Queue >>> q = Queue(0) >>> q.put(9) >>> q.put(8) >>> q.put(7) >>> q.put(6) >>> if [1,2] == [q.get() for i in xrange(3)]: ... print "hei hei" ... >>> q.get() 6 >>>这样就安心了,看来方法还不错。
优美地启动多线程[Python]
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。