python多线程之一,首先我们来看代码
import threading
import time
def test1():
for i in range(5):
print("-----test1----%d---" %i)
def test2():
for i in range(5):
print("-----test2----%d---" %i)
def main():
t1=threading.Thread(target=test1)
t2=threading.Thread(target=test2)
t1.start()
time.sleep(2)
t2.start()
print(threading.enumerate())
if __name__ == '__main__':
main()
老规矩,看代码先从main函数开始看,我们先用threading模块下的Thread类,target为对应的属性,后面填入我们的线程名,也就是对应要执行的函数名,这里有两个,一个为test1,一个为test2,然后t1.start() t2.start(),这个地方需要注意,target=函数名,不能加括号,比如target=test1(),这样代表的意思就是执行这个函数,而不是传入这个参数。
我们按住command(windows为control),左键点击Thread进去可以看得到以下代码
class Thread:
_initialized = False
_exc_info = _sys.exc_info
def __init__(self, group=None, target=None, name=None,
args=(), kwargs=None, *, daemon=None):
assert group is None, "group argument must be None for now"
if kwargs is None:
kwargs = {}
self._target = target
self._name = str(name or _newname())
self._args = args
self._kwargs = kwargs
if daemon is not None:
self._daemonic = daemon
else:
self._daemonic = current_thread().daemon
self._ident = None
self._tstate_lock = None
self._started = Event()
self._is_stopped = False
self._initialized = True
self._stderr = _sys.stderr
_dangling.add(self)
然后继续,threading.enumerate()这个代码的意思是查看进程,我们的程序有一个主线程,然后我们start了test1和test2两个子线程,在python里面,主线程会等子线程结束之后再结束主线程,所以我们可以通过将代码修改为while True无线循环来不停的查看当前有几个线程,这里就不作多解释和演示了。