本文实例讲述了python实现在每个独立进程中运行一个函数的方法。分享给大家供大家参考。具体分析如下:
这个简单的函数可以同于在单独的进程中运行另外一个函数,这对于释放内存资源非常有用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#!/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程序设计有所帮助。