python - Hold sekundær proces kørende, efter at hovedlukningen er lukket

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan bruger jeg biblioteket multiprocessing til at køre en anden proces, hvordan kan jeg fortsætte denne proces efter lukning af den første? Jeg sværger det oprindeligt gjorde det, og jeg var nødt til at aktivere daemon-indstillingen, så den kunne lukke ordentligt, men nu kan jeg ikke adskille dem.


Her er en simpel kode, der har problemet. Hvis du holder tæt på hovedvinduet, lukker du også den anden proces, men så vidt jeg er opmærksom på, bør det kun ske, hvis daemon er sat til True.


from multiprocessing import Process

def background\_process():

    #So you can see it eating the cpu
    while True:
        pass

if \_\_name\_\_ == '\_\_main\_\_':

    p = Process(target=background\_process)
    p.daemon = False
    p.start()


Jeg målretter for scriptet at køre på alle platforme, så som multiprocessingdelen er en stor del af koden, foretrækker jeg at holde den ret universel.

Bedste reference


Du kan bare bruge os.fork(): [5]


from os import fork

child\_pid = fork()
if child\_pid == 0:
    '''This is the child process, i.e your background process'''
else:
    '''This is the parent process.'''


Du kan bruge signaler, rør og stikkontakter (Unix sockets) til at kommunikere. [6] [7] [8]


multiprocessing.Process forsøger at gøre dit liv lettere, men det gør sjældent. Jeg vil råde dig til ikke at bruge det overhovedet.