Python簡單多進程demo
阿新 • • 發佈:2018-09-23
inf _id pan 使用場景 pro form mat 簡單 不能
‘‘‘ 多線程使用場景: 怎樣用Python的多線程提高效率? io操作不占用CPU 計算操作占用CPU Python多線程不適合CPU操作密集型的任務,適合io操作密集型的任務 如果有CPU操作密集型的任務需要用多進程,啟動八個進程每個進程裏一個線程,一共八個線程 在八核上運行,可以利用八核了,唯一的壞處是數據不能共享 怎樣啟動多進程呢? ‘‘‘ import multiprocessing import time import threading # 功能:啟動10個進程,每個進程裏啟動一個線程 def thread_run(): print(threading.get_ident())def run(name): time.sleep(2) print("hello",name) t = threading.Thread(target=thread_run,) t.start() if __name__ == ‘__main__‘: for i in range(10): p = multiprocessing.Process(target=run, args=(‘bob{0}‘.format(i),)) p.start()
打印子進程和父進程信息:
‘‘‘ 每個進程都是由他的父進程啟動的,每個進程都有一個父進程‘‘‘ import os from multiprocessing import Process def info(title): print(title) print(‘module name:‘,__name__) # 模塊名 print(‘parent process:‘,os.getppid()) # 父進程ID print(‘process id:‘, os.getpid()) # 本進程ID print(‘\n\n‘) def f(name): info(‘\033[31;1mfunction f\033[0m‘)print(‘hello‘,name) if __name__ == ‘__main__‘: info(‘\033[32;1m main process line\033[0m‘) p = Process(target=f, args=(‘bob‘,)) p.start() p.join() ‘‘‘ main process line module name: __main__ parent process: 4436 process id: 6032 function f module name: __mp_main__ parent process: 6032 process id: 5800 hello bob ‘‘‘
Python簡單多進程demo