码迷,mamicode.com
首页 > 编程语言 > 详细

优美地启动多线程[Python]

时间:2014-08-22 21:12:29      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:blog   使用   for   ar   2014   art   问题   log   ad   

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]

标签:blog   使用   for   ar   2014   art   问题   log   ad   

原文地址:http://blog.csdn.net/u010211892/article/details/38761303

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!