一、以已有普通函数为参数,直接用Process类进行实例化(常用)

from multiprocessing import Process   线程为from Threading import Thread

def f(name):
    pass

if __name__ == '__main__':  (此种方式在windows系统下必须在该代码下建立进程)
    p = Process(target=f, args=('bob',))         线程为Thread
    p.start()
    p.join()

 

二、先继承Process建立一个生成进程的(通常命名为MyProcess),再利用该类以实例化方式生成进程。
class MyProcess(Process):
    def __init__(self,name):
        super().__init__()
        self.name=name
    def run(self):
        print(os.getpid())
        pass
#if __name__ == '__main__':(可要可不要)
  p1=MyProcess('111') 
  p2=MyProcess('222')

  p1.start() #start会自动调用run
  p2.start()

  p1.join()
  p2.join()

  三、守护进程 (会在主进程代码执行结束后就终止)

p.daemon=True #一定要在p.start()前设置,设置p为守护进程,禁止p创建子进程,并且父进程代码执行结束,p即终止运行

  注意守护线程:主线程运行结束后不会立刻结束,要等其他线程全部结束后才会结束,因为主线程结束意味着所在进程的结束。

      但有例外,若将其他线程定义为守护线程,则该线程会在主线程运行结束时,不再执行剩余动作而和主线程一起立刻结束。

  四、:并发--->串行,牺牲了运行效率,但避免了竞争 

from multiprocessing import Process,Lock 
def f(lock,n):
    lock.acquire()
    竞争性操作
    lock.release()

if __name__ == '__main__':
    lock=Lock()
    for i in range(3):
        p=Process(target=work,args=(lock,i))
        p.start()