python實(shí)現(xiàn)在每個獨(dú)立進(jìn)程中運(yùn)行一個函數(shù)的方法
本文實(shí)例講述了python實(shí)現(xiàn)在每個獨(dú)立進(jìn)程中運(yùn)行一個函數(shù)的方法。分享給大家供大家參考。具體分析如下:
這個簡單的函數(shù)可以同于在單獨(dú)的進(jìn)程中運(yùn)行另外一個函數(shù),這對于釋放內(nèi)存資源非常有用
#!/usr/bin/env python
from __future__ import with_statement
import os, cPickle
def run_in_separate_process(func, *args, **kwds):
pread, pwrite = os.pipe()
pid = os.fork()
if pid > 0:
os.close(pwrite)
with os.fdopen(pread, 'rb') as f:
status, result = cPickle.load(f)
os.waitpid(pid, 0)
if status == 0:
return result
else:
raise result
else:
os.close(pread)
try:
result = func(*args, **kwds)
status = 0
except Exception, exc:
result = exc
status = 1
with os.fdopen(pwrite, 'wb') as f:
try:
cPickle.dump((status,result), f, cPickle.HIGHEST_PROTOCOL)
except cPickle.PicklingError, exc:
cPickle.dump((2,exc), f, cPickle.HIGHEST_PROTOCOL)
os._exit(0)
#an example of use
def treble(x):
return 3 * x
def main():
#calling directly
print treble(4)
#calling in separate process
print run_in_separate_process(treble, 4)
希望本文所述對大家的Python程序設(shè)計(jì)有所幫助。
- python 動態(tài)獲取當(dāng)前運(yùn)行的類名和函數(shù)名的方法
- python每隔N秒運(yùn)行指定函數(shù)的方法
- Python裝飾器限制函數(shù)運(yùn)行時間超時則退出執(zhí)行
- Python中統(tǒng)計(jì)函數(shù)運(yùn)行耗時的方法
- 使用python裝飾器計(jì)算函數(shù)運(yùn)行時間的實(shí)例
- python獲取當(dāng)前運(yùn)行函數(shù)名稱的方法實(shí)例代碼
- Python使用多進(jìn)程運(yùn)行含有任意個參數(shù)的函數(shù)
- 為什么在函數(shù)中運(yùn)行的?Python?代碼速度更快?
相關(guān)文章
基于virtualenv創(chuàng)建python虛擬環(huán)境過程圖解
這篇文章主要介紹了基于virtualenv創(chuàng)建python虛擬環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
Python while 循環(huán)使用的簡單實(shí)例
下面小編就為大家?guī)硪黄狿ython while 循環(huán)使用的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
Python sklearn中的.fit與.predict的用法說明
這篇文章主要介紹了Python sklearn中的.fit與.predict的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python爬蟲Scrapy框架:媒體管道原理學(xué)習(xí)分析
這篇文章主要介紹了python爬蟲Scrapy框架:媒體管道原理學(xué)習(xí)分析,有需要的朋友可以借鑒參考,希望可以對廣大一同學(xué)習(xí)的讀者朋友有所幫助2021-09-09
關(guān)于Django顯示時間你應(yīng)該知道的一些問題
將Django項(xiàng)目部署到Linux系統(tǒng)上進(jìn)行測試時,發(fā)現(xiàn)操作記錄的時間與服務(wù)器的時間不一致,相差13個小時。這主要是因?yàn)闀r區(qū)的問題,下面這篇文章主要總結(jié)介紹了關(guān)于Django顯示時間你應(yīng)該知道的一些問題,需要的朋友可以參考下。2017-12-12

