什么是线程(thread)
线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
一个线程就是一堆指令集合
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:thread.py
# time:2021/03/26
import time
def foo():
print('foo')
time.sleep(1) #sleep不占cpu的,cpu是不工作的
def bar():
print('bar')
time.sleep(2)
foo()
bar()
/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/thread_precoss/thread.py
foo
bar
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:thread.py
# time:2021/03/26
import time
begin = time.time()
def foo():
print('foo')
time.sleep(1)
def bar():
print('bar')
time.sleep(2)
foo()
bar()
end=time.time()
print(end-begin)
/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/thread_precoss/thread.py
foo
bar
3.0025744438171387
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:thread.py
# time:2021/03/26
import time
import threading
begin = time.time()
def foo(n):
print('foo%s' %n)
time.sleep(1)
def bar(n):
print('bar%s' %n)
time.sleep(2)
t1 = threading.Thread(target=foo,args=(1,)) #创建一个线程对象,target后面写执行的函数或任务,args后面跟参数,以元组方式
t2 = threading.Thread(target=bar,args=(2,)) #子线程和主线程同时工作,没有先后。
t1.start() #启动线程
t2.start()
print('.....in the main.....')
end=time.time()
print(end-begin)
/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/thread_precoss/thread.py
foo1
bar2
.....in the main.....
0.0002884864807128906
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:thread.py
# time:2021/03/26
import time
import threading
begin = time.time()
def foo(n):
print('foo%s' %n)
time.sleep(1)
print('end foo')
def bar(n):
print('bar%s' %n)
time.sleep(2)
print('end bar')
t1 = threading.Thread(target=foo,args=(1,))
t2 = threading.Thread(target=bar,args=(2,))
t1.start()
t2.start()
print('.....in the main.....')
end=time.time()
print(end-begin)
/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/thread_precoss/thread.py
foo1
bar2
.....in the main.....
0.00030875205993652344
end foo
end bar
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:thread.py
# time:2021/03/26
import time
import threading
begin = time.time()
def foo(n):
print('foo%s' %n)
time.sleep(1)
print('end foo')
def bar(n):
print('bar%s' %n)
time.sleep(2)
print('end bar')
t1 = threading.Thread(target=foo,args=(1,))
t2 = threading.Thread(target=bar,args=(2,))
t1.start()
t2.start()
print('.....in the main.....')
t1.join() #如果t1线程不结束,它不往下走了,
t2.join()
end=time.time()
print(end-begin)
/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/thread_precoss/thread.py
foo1
bar2.....in the main.....
end foo
end bar
2.0026347637176514
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:thread.py
# time:2021/03/26
import time
import threading
begin = time.time()
def foo(n):
print('foo%s' %n)
time.sleep(8)
print('end foo')
def bar(n):
print('bar%s' %n)
time.sleep(8)
print('end bar')
t1 = threading.Thread(target=foo,args=(1,))
t2 = threading.Thread(target=bar,args=(2,))
t1.start()
t2.start()
print('.....in the main.....')
t1.join()
t2.join()
end=time.time()
print(end-begin)
/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/thread_precoss/thread.py
foo1
bar2
.....in the main.....
end foo
end bar
8.008392572402954
Process finished with exit code 0
浙公网安备 33010602011771号