import time
def foo():
print("start foo")
time.sleep(1)
print("end foo")
def bar():
print("start bar")
time.sleep(2)
print("end bar")
start = time.time()
foo()
bar()
end = time.time()
print(end - start) # 3.00023s
多线程
import threading
import time
def foo():
print("start foo")
time.sleep(1)
print("end foo")
def bar():
print("start bar")
time.sleep(2)
print("end bar")
start = time.time()
t1 = threading.Thread(target=foo, args=())
t2 = threading.Thread(target=bar, args=())
t1.start()
t2.start()
end = time.time()
print(end - start) # 0.0009s
多进程
import multiprocessing
import time
def f0(a1):
time.sleep(3)
print(a1)
if __name__ == '__main__': # windows下必须加这句
t = multiprocessing.Process(target=f0, args=(12,))
t.daemon = True # 将daemon设置为True,则主线程不等待子进程,主线程结束则所有结束
t.start()
t2 = multiprocessing.Process(target=f0, args=(13,))
t2.daemon = True
t2.start()
print('end') # 默认情况下等待所有子进程结束,主进程才结束
# result: end
每个进程之间数据不会共享
li = []
def f1(i):
li.append(i)
print('你好',li)
if __name__ =='__main__':#进程不能共用内存
for i in range(10):
p = Process(target=f1,args=(i,))
p.start()
'''每个进程都创建一个列表,然后添加一个元素进去,
每个进程之间的数据是不能共享的
线程之间可以实现数据共享
import threading
li = []
def f1(i):
li.append(i)
print('你好', li)
if __name__ == '__main__': # 进程不能共用内存
for i in range(10):
p = threading.Thread(target=f1, args=(i,))
p.start()
# 线程之间可以数据共享 li的维数据不断增加
参考文章: