我有一个名为MyScript的
python脚本(基于RHEL的类似unix),它有两个函数,叫做A和B.我希望它们在不同的独立进程中运行(分离B和A):
>启动脚本MyScript
>执行功能A.
>生成一个新进程,将数据从函数A传递给B
>当功能B运行时,继续功能A.
>当功能A完成时,即使B仍在运行,也要退出MyScript
我以为我应该使用多处理来创建一个守护进程,但是documentation表明它不是正确的用例.所以,我决定生成一个子进程和子进程^ 2(子进程),然后强制终止子进程.虽然这种解决方法似乎有效,但看起来真的很难看.
你能帮我把它变得更加pythonic吗?子进程模块是否有一个可以在函数上运行的方法?示例代码如下.
import multiprocessing
import time
import sys
import os
def parent_child():
p = multiprocessing.current_process()
print 'Starting parent child:', p.name, p.pid
sys.stdout.flush()
cc = multiprocessing.Process(name='childchild', target=child_child)
cc.daemon = False
cc.start()
print 'Exiting parent child:', p.name, p.pid
sys.stdout.flush()
def child_child():
p = multiprocessing.current_process()
print 'Starting child child:', p.name, p.pid
sys.stdout.flush()
time.sleep(30)
print 'Exiting child child:', p.name, p.pid
sys.stdout.flush()
def main():
print 'starting main', os.getpid()
d = multiprocessing.Process(name='parentchild', target=parent_child)
d.daemon = False
d.start()
time.sleep(5)
d.terminate()
print 'exiting main', os.getpid()
main()