Estaba mirando ../qa/rpc-tests/util.py
para averiguar cómo se asignan puertos arbitrarios a cada nodo creado. En las primeras líneas del código dice:
...
def p2p_port(n):
devuelve 11000 + n + os.getpid()%999
...
Así que me pregunto qué hace exactamente os.getpid()%999. ¿Está buscando instantáneamente un puerto libre?
¡Gracias de antemano!
os.getpid()
en Python está obteniendo la identificación del proceso actual . La identificación del procesador es 'aleatoria', ya que ejecutar la prueba completa varias veces dará como resultado un pid diferente, pero dentro de la misma prueba, el pid permanecerá constante.
El %
operador es el operador de módulo , que básicamente corta todos menos los últimos 3 dígitos de la identificación del procesador.
Juntos os.getpid() % 999
obtienen una compensación constante e ignoran todos menos los últimos 3 dígitos. Este nuevo número de 3 dígitos se suma a la constante 11000 para devolver el número de puerto a utilizar.
Aliakbar Ahmadi
JuanDvorak
os.getpid()
devuelve es el pid del script de Python en el momento en que se ejecuta. Cada vez quep2p_port(n)
se llama, se devuelve la identificación del proceso que se está ejecutando actualmente. eso esta mas claro?Aliakbar Ahmadi
JuanDvorak
util.py
solo incluye funciones que son utilizadas por otras partes del código de prueba. Entonces, cada vez que otras partes del código llamaninitialize_datadir()
yinitialize_chain()
(que luego llamanp2p_port()
), los pid serán los mismos si se llaman dentro del mismo proceso.Aliakbar Ahmadi
Aliakbar Ahmadi
Aliakbar Ahmadi
Aliakbar Ahmadi
JuanDvorak
Aliakbar Ahmadi