2016-01-27 95 views
0

我現在用的是POPEN使用的情況下,這樣的(這只是一個骨架/想法):避免多個子POPEN

cipherstr = sys.argv[1] 
cmd = 'openssl ciphers -v %s' % cipherstr 
p = subprocess.Popen(shlex.split(cmd)) 
p.wait() 

在這個月底,我耗輸出作爲密碼套件的列表。如您所見,每次調用此模塊都會調用新的openssl進程。每次調用的延遲時間約爲40毫秒(對於1000次調用而言,代價很高)。

我的目標是保持openssl進程處於活動狀態並通過unix套接字/管道傳遞cipherstr。這樣,我有一個調用openssl,運行過程不斷地返回基於不同輸入的輸出。

AFAICT,openssl ciphers不會從中破壞了我的假設一個文件中讀取。

你有別的選擇嗎?

+0

你想異步啓動的過程中,不等待輸出? –

+0

你讀過python-openssl包嗎?你可能會發現一些有用的東西,而不是使用命令行指令。 https://docs.python.org/2/library/ssl.html –

+0

@RolfofSaxony我見過蟒蛇,SSL和pyOpenSSL文檔。沒有什麼能幫助我。 – sandyp

回答

2

我不認爲有辦法把它們只接受一個字作爲輸入數據轉換成某種永久運行「服務」程序,應對任何數量的查詢。

如果您不想重新實現openssl ciphers -v <word>,似乎仍然只有一種方法來加速您的查詢:將結果放入緩存中。