Python Twisted与多进程
我想知道怎么在新的进程中重新设置(通过进程包装)Twisted。我的需求是从一个已经有很多反应器的进程中生成一个新进程,但我需要在新进程中更换反应器,也就是去掉一些东西,添加其他东西。
举个例子,我需要在父进程和子进程中都使用glib2reactor……但是Twisted告诉我,反应器已经在父进程中安装过了(在分叉之后)。分叉会把父进程的内存复制到子进程,包括所有的Twisted反应器。那么我该怎么在子进程中“重置”Twisted呢?
谢谢你的帮助,
Dudda
2 个回答
0
Twisted支持启动任意的子进程(包括那些使用Twisted的进程),这可以通过twisted.internet.interfaces.IReactorProcess
来实现。想了解具体怎么用,可以查看这个关于进程的指南。
0
os.fork()
是一个用来复制当前进程的函数。它会把当前的进程分成两个,父进程会收到新进程的ID,而新进程会收到0。
if os.fork():
"parent"
else:
"child"
如果你使用 os.system()
或者 subprocesses
模块,那么你会得到一个全新的进程。
你可以在你的 os.system()
命令中使用一个叫 &
的符号,这样可以避免程序被阻塞。
error = os.system('ls &')
os.execv
及其相关函数会把当前的进程替换成你想要执行的命令。