|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wei_Y 于 2016-10-23 12:25 编辑
哎~??
啊噜很圆,
但是你能在调戏啊噜时调戏熊本吗?!
好吧,python也不能。
在Python中,我们可以很容易的开启一个新线程。
from threading import Thread
Thread函数就可以让我们创建一个新的线程。
经典的time法。
一起来看;
- def a(x, t):
- while 1:
- print(x)
- time.sleep(t)
复制代码
首先这里有一个函数a,作用就是打印出来x,然后睡个几秒钟。
- b = Thread(target=a, args=('我是1', 1))
- c = Thread(target=a, args=('我是2', 2))
复制代码
我们创建两只线程。
简单介绍下常用到的参数。
- class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
复制代码
target 就是目标,我们要执行的函数,
args就是目标执行需要的参数,
kwargs是带有默认参数时用到的。
这样我们在创建时就可以用:
Thread(target=d, kwargs={arg: 7})这样。
其他的不是很常用。
###
Ok,参数中需要注意args,这货是个元组。
比如。
我们在创建线程时如果这么写
Thread(target=e, args=(77))
那么他就会爆个错,- TypeError: e() argument after * must be a sequence, not int
复制代码
所以对于单参数的函数我们写参数时需要写成
Thread(target=e, args=(77,))
话说回来,
- b = Thread(target=a, args=('我是1', 1))
- c = Thread(target=a, args=('我是2', 2))
复制代码
创建好这么两只线程,只要调用start()就可以启动他们。
结果:
- 我是1
- 我是2
- 我是1
- 我是1
- 我是2
- 我是1
- 我是1
- 我是2
- 我是1
复制代码
------
大部分教程中还会在start()后加一个join()函数。
join有什么用呢,join就是让一个线程一直执行完成后才给其他线程执行。
我们试试
- b.start()
- b.join()
- c.start()
- c.join()
复制代码
- 我是1
- 我是1
- 我是1
- 我是1
- 我是1
- 我是1
- 我是1
- 我是1
- 我是1
复制代码
结果是只有1没有2,。
Python本来具有调戏啊噜的同时调戏熊本!
但是加上join后就失去了这个能力,这让python又变回了单线程!
可是可是,我看到好像是这么写的:
- b.start()
- c.start()
- b.join()
- c.join()
复制代码
- 我是1
- 我是2
- 我是1
- 我是1
- 我是2
- 我是1
- 我是2
- 我是1
复制代码
这样就是让你的python两个线程交替执行了,
对于少量的线程需求使用这种方法完全可以。
Python可以同时调戏几个啊噜和几个熊本!
但其实和只start()相差不多。
参考:
http://www.liaoxuefeng.com/wiki/ ... 916192364506fa5d000
|
|