[python]多程序介紹和使用
阿新 • • 發佈:2018-12-11
# import os
# fork只能用於linux/unix中, fork會建立一個子程序
# pid = os.fork()
# print("bobby")
# if pid == 0: #子程序pid是0
# print('子程序 {} ,父程序是: {}.' .format(os.getpid(), os.getppid()))
# else:
# print('我是父程序:{}.'.format(pid))
fork出來一個子程序之後,就有兩個程序一起進行了,一個主程序,一個子程序
所以會print 兩次bobby
if判斷裡面 兩個也都會列印
import multiprocessing #多程序程式設計 import time def get_html(n): time.sleep(n) print("sub_progress success") return n class GetHtml(multiprocessing): #多程序 和執行緒一樣,可以使用類來編寫 def run(self, n): time.sleep(n) print("sub_progress success") return n if __name__ == "__main__": # progress = multiprocessing.Process(target=get_html, args=(2,)) # print(progress.pid) # progress.start() # print(progress.pid) #程序start之後,可以獲取程序的pid # progress.join() # print("main progress end") #使用執行緒池 pool = multiprocessing.Pool(multiprocessing.cpu_count()) # result = pool.apply_async(get_html, args=(3,)) # # #等待所有任務完成 # pool.close() #要先close,禁止其他程序進來。才能join堵塞,等待所有程序完成 # pool.join() # # print(result.get()) # 獲取程序結果,return值 #imap # for result in pool.imap(get_html, [1,5,3]): # print("{} sleep success".format(result)) # 這個列印順序 是 1 5 3 for result in pool.imap_unordered(get_html, [1,5,3]): print("{} sleep success".format(result)) #這個的列印順序是 1 3 5,先完成的程序先列印