进程(二)
?
import osimport time
from multiprocessing import Process
def func(args,args2):
print(args,args2)
time.sleep(3)
print('子進程 :', os.getpid())
print('子進程的父進程 :', os.getppid())
print(12345)
if __name__ == '__main__':
p = Process(target=func,args=('參數','參數2')) # 注冊,一個參數時,應該加逗號,比如(‘參數1’,)
# p是一個進程對象,還沒有啟動進程
p.start() # 開啟了一個子進程
print('*'*10)
print('父進程 :',os.getpid()) # 查看當前進程的進程號
print('父進程的父進程 :',os.getppid()) # 查看當前進程的父進程
?
# 進程的生命周期
# 主進程
# 子進程
# 開啟了子進程的主進程 :
# 主進程自己的代碼如果長,等待自己的代碼執行結束,
# 子進程的執行時間長,主進程會在主進程代碼執行完畢之后等待子進程執行完畢之后 主進程才結束
多進程中的幾個方法?
?
# join()import time
from multiprocessing import Process
def func(arg1,arg2):
print('*'*arg1)
time.sleep(5)
print('*'*arg2)
if __name__ == '__main__':
p = Process(target=func,args=(10,20))
p.start()
print('hahahaha')與fun方法執行是異步的
p.join() # 是感知一個子進程的結束,將異步的程序改為同步
print('====== : 運行完了')與fun同步
??? #? 開啟多個子進程
?
import osimport time
from multiprocessing import Process
def func(filename,content):
with open(filename,'w') as f:
f.write(content*10*'*')
if __name__ == '__main__':
p_lst = []
for i in range(10):
p = Process(target=func,args=('info%s'%i,0))
p_lst.append(p)
p.start()
for p in p_lst:p.join() # 之前的所有進程必須在這里都執行完才能執行下面的代碼
# [p.join() for p in p_lst]
print([i for i in os.walk(r'E:\python10\day37')])
# 同步 0.1 * 500 = 50
# 異步 500 0.1 = 0.1
# 多進程寫文件
# 首先往文件夾中寫文件
# 向用戶展示寫入文件之后文件夾中所有的文件名
?
?
?
???? # 開啟多進程的第二種方式
import osfrom multiprocessing import Process
class MyProcess(Process):
def __init__(self,arg1,arg2):
super().__init__()因為父類里有_init_方法,需導入實現_init_方法,不然報錯
self.arg1 = arg1
self.arg2 = arg2
def run(self):重寫run方法,必須是run
print(self.pid)
print(self.name)
print(self.arg1)
print(self.arg2)
if __name__ == '__main__':
p1 = MyProcess(1,2)
p1.start()
p2 = MyProcess(3,4)
p2.start()
# 自定義類 繼承Process類
# 必須實現一個run方法,run方法中是在子進程中執行的代碼
?
轉載于:https://www.cnblogs.com/mys6/p/10822178.html
總結
- 上一篇: 工具资源
- 下一篇: 工具分享:易读文档下载器(同时支持百度/