线程和进程:
进程:简单的讲进程就是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间。一个进程可以以拥有多个并发的执行线索。那就有人问并发是什么??举个简单的例子来说明一下,例如我们倒车入库,一个库两辆车同时进行倒车入库,此时就是并发。(明白吧)官方点儿就是拥有多个可以获得CPU调度的执行单元,这就是所谓的线程。由于线程在同一个进程下,它们可以共享相同的上下文,因此相对于进程而言,线程间的信息共享和通信更加容易。当然在单核CPU系统中,真正的并发是不可能的,因为在某个时刻能够获得CPU的只有唯一的一个线程,多个线程共享了CPU的执行时间。
创建进程:
python
import multiproccessing
def A():
print('hello')
if __name__='__main__':
##创建进程
p=multiprocessing.Process(taeget=A,args=())
p.start() #启动线程
print('Over')
执行结果:
Over
hello
原因:因为每一个进程都是独立的,在我们进行执行的时候其实就是在启动一个进程,上面那个p.start被上面我梦定一的进程给抢走了,所以先执行的下面‘Over’,然后才执行的‘hello’
优化上面的代码:
import multiproccessing
def A():
print('hello')
if __name__='__main__':
##创建进程
p=multiprocessing.Process(taeget=A,args=())
p.start() #启动线程
p.join()
print('Over')
执行结果:
hello
Over
Python既支持多进程又支持多线程,因此使用Python实现并发编程主要有3种方式:多进程、多线程、多进程+多线程。
python中的多进程:
代码如下
import multiproccessing
import os
def A(name):
print(os.getpid) #h获取存放地址
print(name)
if __name__='__main__':
##创建进程
p=multiprocessing.Process(taeget=A,args=('CCN',)) ##在args中的参数必须是元组
p2=multiprocessing.Process(taeget=A,args=('CCN01',))
##多进程
p.start() #启动线程
p2.start()
p.join()
p2.join()
print('ok')
执行结果:
CCN
地址
CCN
地址
ok
课上的小例题,好难呀?