3 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果您無法找出正確的 PID,我可能有一個(gè)替代解決方案,利用您用于啟動(dòng)該過程的參數(shù)。它不是那么好,因?yàn)槟鷮⒈闅v流程樹直到找到匹配項(xiàng),但這樣它肯定會(huì)找到流程。
請(qǐng)記住,如果您有多個(gè)運(yùn)行相同參數(shù)的進(jìn)程,這可能不會(huì)總是返回正確的進(jìn)程。
def process_get(*args):
"""Returns the process matching ``args``.
Relies on ``args`` matching the argument list of the process to find.
Args:
*args: process arguments, e.g. ["java", "-jar", "somejar.jar"]
Returns:
:obj:`process`
"""
import psutil
for process in psutil.process_iter():
try:
if process.cmdline() == args:
return process
except psutil.AccessDenied:
pass
return None

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
如果你想要更好的效率,你可以ListB變成一個(gè)集合,這樣你就可以確定一個(gè)項(xiàng)目是否在ListBO(1) 的平均時(shí)間復(fù)雜度中:
setB = set(ListB)
print(next(i for i, a in enumerate(ListA) if a in setB))
這輸出: 1
添加回答
舉報(bào)