线程与多处理器Python
下面的脚本正在使用python线程:线程与多处理器Python,python,Python,下面的脚本正在使用python线程: import logging import threading import time def thread_function(name): logging.info("Thread %s: starting", name) time.sleep(2) logging.info("Thread %s: finishing", name) if ____name____ == "____main____": format
import logging
import threading
import time
def thread_function(name):
logging.info("Thread %s: starting", name)
time.sleep(2)
logging.info("Thread %s: finishing", name)
if ____name____ == "____main____":
format = "%(asctime)s: %(message)s"
logging.basicConfig(format=format, level=logging.INFO,
datefmt="%H:%M:%S")
logging.info("Main : before creating thread")
x = threading.Thread(target=thread_function, args=(1,))
logging.info("Main : before running thread")
x.start()
logging.info("Main : wait for the thread to finish")
# x.join()
logging.info("Main : all done")
上述脚本的输出为:
10:04:50:Main:创建线程之前
10:04:50:Main:运行线程之前
10:04:50:线程1:启动
10:04:50:Main:等待线程完成
10:04:50:Main:全部完成
10:04:52:螺纹1:精加工
当我使用多处理器时:
from multiprocessing import Process
import time
import logging
def thread_function(name):
logging.info("Thread %s: starting", name)
time.sleep(2)
logging.info("Thread %s: finishing", name)
if ____name____ == "____main____":
format = "%(asctime)s: %(message)s"
logging.basicConfig(format=format, level=logging.INFO,
datefmt="%H:%M:%S")
logging.info("Main : before creating thread")
p1 = Process(target=thread_function, args=(1,))
logging.info("Main : before running thread")
p1.start()
logging.info("Main : wait for the thread to finish")
p1.join()
logging.info("Main : all done"
它没有捕获进程正在调用的函数的输出,如下面的输出所示:
10:08:58:Main:创建线程之前
10:08:58:Main:运行线程之前
10:08:58:Main:等待线程完成
10:09:00:Main:全部完成
有人能告诉我这里缺少了什么吗?线程不同于进程 生成一个新的进程,该进程独立于主进程运行,但是一个绑定到父程序的新执行任务 当您创建一个线程时,您的程序正在与其子线程共享所有内容(如变量、函数等),因此您可以从线程中记录一些事件。但是,在一个新的过程中,您最初与主程序共享的只是一些描述符和信息(谁是家长,谁是孩子,等等)。在您的情况下,当您登录到一个新进程时,您基本上是创建一个与父进程无关的新日志实例 对于日常工作,我建议您只使用
线程
库,而不是多处理
库。如果您需要使用最新版本(用于远程进程执行、守护进程创建等),我建议您阅读以下文档:
希望这有帮助不同的流程意味着不同的
stderr
。