<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      python類庫32[多進程]


      由于CPython實現中的GIL的限制,python中的多線程其實并不是真正的多線程,如果想要充分地使用多核CPU的資源,在python中大部分情況我們需要使用多進程。 這也許就是python中多進程類庫如此簡潔好用的原因所在。在python中可以向多線程一樣簡單地使用多進程。

       

      一 多進程 

      process的成員變量和方法:

      >>class multiprocessing.Process([group[, target[, name[, args[, kwargs]]]]]) 來的定義類似于threading.Thread。target表示此進程運行的函數,args和kwargs表示target的參數。

       

      >>name, pid

      分別表示進程的名字,進程id。 

      >> daemon成員

      daemon標志位bool變量,需要在start()調用前設置。daemon的初始值是從父進程繼承而來。當一個進程結束的時候,它嘗試去結束它的所有的daemon子進程。

      注意: 

      daemon進程不允許創建子進程。否則當daemon進程結束的時候它的子進程不能被結束。

      這里的daemon不是Unix的daemon進程,當父進程結束的時候所有的daemon子進程也將被終止(對于非daemon進程,父進程不等待非daemon的紫子進程,除非顯示地對非daemon子進程使用join()方法)。

      >>  exitcode

      如果進程還沒有退出,則為None,如果正確的退出則為0,如果有錯誤則為>0的錯誤代碼,如果進程為終止則為-1*singal。  

      >> start(), is_live(), terminate()

      start()用來啟動進程,is_live()用來查看進程的狀態,terminate()用來終止進程。

      >> run()

      可以在process的子類中重載run()方法,從而設定進程的任務。重載process是構造新進程的另一種方式,一定程度上上等價于process的target參數。

       

      multiprcessing的靜態方法:

      >>  multiprocessing.cpu_count()

      用來獲得當前的CPU的核數,可以用來設置接下來子進程的個數。 

      >>  multiprocessing.active_children()

      用來獲得當前所有的子進程,包括daemon和非daemon子進程。 

       

      實例:

       

      import multiprocessing
      import time
      import sys

      def worker(num):
          p = multiprocessing.current_process()
          print ('Starting:' + p.name + ":" + str(p.pid))
          print(str(num))
          sys.stdout.flush()
          print ('Exiting :' + p.name + ":" + str(p.pid))
          sys.stdout.flush()

      def daemon():
          p = multiprocessing.current_process()
          print ('Starting:' + p.name + ":" + str(p.pid))
          sys.stdout.flush()
          time.sleep(10)
          print ('Exiting :' + p.name + ":" + str(p.pid))
          sys.stdout.flush()
          
      def non_daemon():
          p = multiprocessing.current_process()
          print ('Starting:' + p.name + ":" + str(p.pid))
          sys.stdout.flush()
          time.sleep(20)
          print ('Exiting :' + p.name + ":" + str(p.pid))
          sys.stdout.flush()
          
      if __name__ == '__main__':
          w = multiprocessing.Process(name='worker', target=worker, args=(100,))
          d = multiprocessing.Process(name='daemon', target=daemon)
          d.daemon = True
          nd = multiprocessing.Process(name='non-daemon', target=non_daemon)
          w.start()
          d.start()
          nd.start()
          
          print("the number of CPU is " + str(multiprocessing.cpu_count()))
          print("All children processes:")
          for p in multiprocessing.active_children():
              print("child:" + p.name + ":" + str(p.pid))
          print()
          
          w.join()
          #d.join()

       


      運行結果:

       

      可以從上面的例子看到沒有多非daemon子進程使用join()方法,結果父進程沒有等待非daemon進程結束就退出了。 

       

      完! 

      posted @ 2012-01-06 16:53  iTech  閱讀(2842)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 精品国产色情一区二区三区| 国产成人久久蜜一区二区| 麻豆成人精品国产免费| 在线aⅴ亚洲中文字幕 | 久久国产成人精品av| 亚洲人成色99999在线观看| 一区二区偷拍美女撒尿视频 | 噜噜噜噜私人影院| 国产精品一区二区三区三级| 极品vpswindows少妇| 开心一区二区三区激情| 免费看欧美日韩一区二区三区| 秋霞人妻无码中文字幕| 99精品国产在热久久婷婷| 实拍女处破www免费看| 精品国产片一区二区三区| 中文字幕第55页一区| 亚洲色大成网站WWW久久| 色综合网天天综合色中文| 国产亚洲视频免费播放| 香蕉EEWW99国产精选免费 | 亚洲 一区二区 在线| 国产精品无码aⅴ嫩草| 亚洲男人的天堂av手机在线观看 | 激情在线网| 精品国产成人国产在线观看| 少妇午夜啪爽嗷嗷叫视频| 强伦人妻一区二区三区| 亚洲一区在线成人av| 人妻激情文学| 先锋影音男人av资源| 丁香五月激情综合色婷婷| 东京热一精品无码av| 国产在线中文字幕精品| 国产不卡在线一区二区| 国产免费丝袜调教视频| 精品久久丝袜熟女一二三| 日本一区不卡高清更新二区 | 在线观看成人av天堂不卡| 欧美亚洲另类自拍偷在线拍| 男女爽爽无遮挡午夜视频|