进程和线程对比
1,开进程的开销远远大于开线程
import time
from threading import Thread
from multiprocessing import Process
def piao(name):
print('%s piaoing'%name)
# time.sleep(1)
print('%s piaoing end' % name)
if __name__=='__main__':
start = time.time()
p1 = Process(target=piao, args=('egon',)) # 创建了一个线程对象t1
p1.start() # 进程程花费时间:cost time 0.010999917984008789
# t1=Thread(target=piao,args=('egon',)) #创建了一个线程对象t1
# t1.start() # 线程花费时间:cost time 0.0009999275207519531
print('cost time %s'%(time.time()-start))
输出:
cost time 0.010999917984008789
egon piaoing
egon piaoing end
2,同一进程内的多个线程共享该进程的地址空间,不同进程彼此独立内存空间
from threading import Thread
from multiprocessing import Process
import time
n = 100
def task():
global n
n = 1
print('子进程',n)
if __name__=='__main__':
# p1 = Process(target=task,) # 创建了一个进程对象t1
# p1.start()
'''
进程输出:
子进程 1
主线程, 100
''''
t1 = Thread(target=task,) #创建了一个线程对象t1
t1.start()
'''
线程输出:
子进程 1
主线程, 1
''''
time.sleep(1)
print('主线程,',n)
3,瞅一瞅pid
from threading import Thread
from multiprocessing import Process,current_process
import os
def task():
print('子进程或线程的pid::',current_process().pid)
print('子进程或线程的pid>>',os.getpid(),'主进程',os.getppid())
if __name__=='__main__':
p1 = Process(target=task,) # 创建了一个进程对象t1
p1.start()
print('主进程pid=%s, OS得出的pid=%s, ppid=%s' % (current_process().pid, os.getpid(), os.getppid()))
'''输出:
主进程pid=7924, OS得出的pid=7924, ppid=6996
子进程或线程的pid:: 6892
子进程或线程的pid>> 6892 主进程 7924
'''
# t1=Thread(target=task,) #创建了一个线程对象t1
# t1.start()
# print('主线程pid=%s, OS得出的pid=%s, ppid=%s'%(current_process().pid,os.getpid(),os.getppid()))
'''输出:
子进程或线程的pid:: 7712
子进程或线程的pid>> 7712 主进程 6996
主线程pid=7712, OS得出的pid=7712, ppid=6996
'''
写入自己的博客中才能记得长久