在我的脚本中,我有一个函数foo ,该函数基本上使用 pynotify 来通知用户有关时间间隔(例如15分钟)的信息。

def foo:
    while True:
        """Does something"""
        time.sleep(900)

我的主脚本必须与用户交互并执行所有其他操作,因此我无法调用foo()函数。直接地。

最佳答案

我不会告诉您使用哪一个,但是以下是每​​种优点的一些:

线程的启动速度比进程快,并且线程使用的操作系统资源少于进程,包括内存,文件句柄等。线程还为您提供了通过共享变量进行通信的选项(尽管许多人会说这是一个劣势)比优势-请参见下文)。

进程每个进程都有各自独立的内存和变量,这意味着进程通常通过相互发送消息进行通信。与通过共享内存进行线程通信相比,正确执行容易得多。进程也可以真正并发运行,因此,如果您有多个CPU内核,则可以使用进程使所有内核保持繁忙。在Python *中,global interpreter lock防止线程大量使用多个内核。

*-即CPython,如果您访问http://python.org并下载Python,则将获得该Python的实现。其他Python实现(例如Jython)不一定禁止Python同时在多个CPU上运行线程。感谢@EOL的澄清。

关于python - 我应该使用 fork 还是线程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2482926/

10-14 16:24
查看更多