import logging from threading import Thread from queue import Queue from logging.handlers import QueueListener, QueueHandler from multiprocessing import Pool
from threading import Thread, enumerate from os import fork from time import sleep
# Start a thread: Thread(target=lambda: sleep(60)).start()
if fork(): print("The parent process has {} threads".format( len(enumerate()))) else: print("The child process has {} threads".format( len(enumerate())))
输出:
1 2
The parent process has 2 threads The child process has 1 threads
defruns_in_subprocess(queue, configurer): configurer(queue) print("About to log...") logging.debug("hello, I did something: %s", multiprocessing.current_process().name) print("...logged, %s",queue.qsize())
if __name__ == '__main__': queue = multiprocessing.Queue(-1) listener = multiprocessing.Process(target=listener_process, args=(queue, listener_configurer)) listener.start() #父进程也持续写日志 worker_configurer(queue) defwrite_logs(): whileTrue: logging.debug("in main process, I just did something") Thread(target=write_logs).start()