Python Twisted与多进程

3 投票
2 回答
1889 浏览
提问于 2025-04-17 11:16

我想知道怎么在新的进程中重新设置(通过进程包装)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 及其相关函数会把当前的进程替换成你想要执行的命令。

撰写回答