進程
今日思維導圖


練習代碼
進程實現多任務
importmultiprocessing
importthreading
deftest1(num):
foriinrange(num):
print("---test1%d"%i)
deftest2(num):
foriinrange(num):
print("---test2%d"%i)
defmain():
"""創建子進程只需要把庫換成multiprocessing.Proess即可"""
#t1=threading.Thread(target=test1,args=(5,))
#t2=threading.Thread(target=test2,args=(10,))
p1=multiprocessing.Process(target=test1,args=(5,))
p2=multiprocessing.Process(target=test2,args=(10,))
p1.start()
p2.start()
if__name__=='__main__':
main()
獲取進程的pid
importmultiprocessing
importos
importtime
"""
獲取進程的pid
os.getpid可以獲取當前進程的進程號
os.getppid可以獲取當前進程父進程的進程號
"""
deftest():
whileTrue:
print("--當前進程是%s,父進程是%s"%(os.getpid(),os.getppid()))
time.sleep(1)
defmain():
#創建進程
p=multiprocessing.Process(target=test)
p.start()
print("主程序進程是%s"%os.getpid())
pass
if__name__=='__main__':
main()
進程傳遞參數
importmultiprocessing
"""
Process傳遞的參數可以是多值參數
*args:代表多值元組
**kwargs:打包多值字典
"""
deftest(a,*args,**kwargs):
print(a)
fornuminargs:
print(num)
print(kwargs)
defmain():
p=multiprocessing.Process(target=test,args=(1,2,3,4,5),kwargs={"name":"xiaohei"})
p.start()
if__name__=='__main__':
main()
進程之間不共享全局變量
importos
importtime
importmultiprocessing
"""