91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python中實現多進程

發布時間:2021-04-07 17:45:17 來源:億速云 閱讀:190 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關如何在Python中實現多進程,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

部署一個rpcServer

from SimpleXMLRPCServer import SimpleXMLRPCServer
def add(a , b): 
  return a+bserver = SimpleXMLRPCServer(("10.249.192.38", 8000))#這里不要用localhost,否則只有本機才能訪問
server.register_function(add)
server.serve_forever()

客戶端:

from xmlrpclib import Server
Proxyserver = ServerProxy("http://localhost:8000")
try: ret = server.add(30,90) print 'result:', ret print 'result type:', type(ret)
except
 Exception, e: print "exception",e

其實還是很簡單的。

然后再看了下python的多進程和多線程的方法,寫了個例子,如下:

#encoding=utf-8
import sys
import os
import time
import pdb
import httplib
import thread
import threading
constant_p = 0 #創建全局變量,進程數
constant_s = 0 #創建全局變量,線程數
mutex_g = threading.RLock() #創建全局鎖
def run(count):#該函數創建3個線程,同時調用3個不同的函數
  a = 1
  b = 0
  thread.start_new_thread(test0,(a,b))#這里傳入的參數需要以元組的形式,跟void指針其實也差不多
  thread.start_new_thread(test1,(a,b))
  thread.start_new_thread(test2,(a,b))
def test0(a,b):
  global mutex_g
  global constant_s
  threadid = thread.get_ident()
  mutex_g.acquire()#這里需要把線程數說鎖起來,否則結果會被修改
  constant_s = constant_s+1
  mutex_g.release()
  print "thread 0 called,and the threadid is:%d"%(threadid)
  sys.exit(0)
def test1(a,b):
  global mutex_g
  global constant_s
  threadid = thread.get_ident()
  mutex_g.acquire()
  constant_s = constant_s+1
  mutex_g.release()
  print "thread 1 called,and the threadid is:%d"%(threadid)
  sys.exit(0)
def test2(a,b):
  global mutex_g
  global constant_s
  threadid = thread.get_ident()
  mutex_g.acquire()
  constant_s = constant_s+1
  mutex_g.release()
  print "thread 2 called,and the threadid is:%d"%(threadid)
  sys.exit(0)
def my_fork():
  global constant_p
  pid = os.fork()#fork一個子進程,子進程的pid=0同時2個進程會執行my_fork()函數
  if (pid == 0):#子進程執行到這個if里面
    constant_p = constant_s + 1
    run(3)
    time.sleep(5)
    print "total thread is %d"%constant_s#這個結果是3,因為子進程創建按了3個線程
  elif (pid >0):#父進程執行到這個if里面
    constant_p = constant_s + 1 run(4)
    time.sleep(5)
    print "total thread is %d"%constant_s#這個結果也是3,因為該進程也創建了3個線程
  else:
    print "fork error"
    sys.exit(0)
  print "total process is %d"%constant_p#該結果是1,因為2個進程只執行了一次
  constant_p = constant_s + 1
  sys.exit(0)
if __name__ == "__main__":
  my_fork()
  #my_fork()
  #my_fork()

關于如何在Python中實現多進程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐山市| 都昌县| 东平县| 洛阳市| 桑日县| 瑞金市| 武义县| 连江县| 东光县| 梓潼县| 瑞昌市| 息烽县| 新巴尔虎右旗| 叙永县| 津市市| 朝阳区| 陇南市| 商河县| 天柱县| 军事| 阿拉善左旗| 灵寿县| 上犹县| 东兴市| 重庆市| 古浪县| 澎湖县| 景宁| 河池市| 潍坊市| 北票市| 清徐县| 光山县| 高邮市| 嫩江县| 安泽县| 华蓥市| 华安县| 贵南县| 永丰县| 巴楚县|