您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在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中實現多進程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。