我認爲在Python中實現Singleton模式的簡單方法是通過類屬性:
from my_module import ProcessManager
my_args = ...
ProcessManager.set_process(my_args)
...
ProcessManager.kill_process()
注:
import subprocess
class ProcessManager(object):
__PROCESS = None;
@staticmethod
def set_process(args):
# Sets singleton process
if __PROCESS is None:
p = subprocess.Popen(args)
ProcessManager.__PROCESS = p;
# else: exception handling
@staticmethod
def kill_process():
# Kills process
if __PROCESS is None:
# exception handling
else:
ProcessManager.__PROCESS.kill()
然後你可以通過使用這個類
- t他
ProcessManager
負責創建過程中,要對稱,其截至
- 我沒有在多線程足夠的知識,知道這部作品在多線程模式
但是,這使得它只能將一個進程一次連接到進程管理器,用於多個進程?頂部的另一層散列? – redDragonzz
噢,如果你有幾個進程,那麼使用相同類型的設計,你可以很容易地使用key = session ID的'dict'(或者任何需要識別會話的方式),value = process。測試一個會話ID有一個已經註冊的進程仍然很簡單('if process_id in __PROCESS_DICT' ...) – Emmanuel
是否有效:) – redDragonzz