python – 我应该使用fork还是thread?

在我的脚本中,我有一个函数foo,它基本上使用pynotify在15分钟的时间间隔之后反复通知用户.
def foo:
    while True:
        """Does something"""
        time.sleep(900)

我的主要脚本必须与用户&做所有其他事情所以我不能调用foo()函数.直.

Whats the better way of doing it and why?
Using fork or threads?

解决方法

我不会告诉你使用哪一个,但这里有一些优点:

线程可以比进程更快地启动,并且线程使用比进程更少的操作系统资源,包括内存,文件句柄等.线程还为您提供了通过共享变量进行通信的选项(尽管许多人会说这比一个更不利于优势 – 见下文).

每个进程都有自己独立的内存和变量,这意味着进程通常通过相互发送消息进行通信.这比线程通过共享内存进行通信要容易得多.进程也可以真正同时运行,因此如果您有多个cpu核心,您可以让所有进程忙于使用进程.在Python *中,global interpreter lock可以防止线程多次使用多个核心.

* – 也就是CPython,如果你去http://python.org并下载Python就可以获得Python的实现.其他Python实现(例如Jython)不一定禁止Python同时在多个cpu上运行线程.感谢@EOL的澄清.

相关文章

在这篇文章中,我们深入学习了XPath作为一种常见的网络爬虫技巧。XPath是一种用于定位和选择XML文档中特...
祝福大家龙年快乐!愿你们的生活像龙一样充满力量和勇气,愿你们在新的一年里,追逐梦想,勇往直前,不...
今天在爬虫实战中,除了正常爬取网页数据外,我们还添加了一个下载功能,主要任务是爬取小说并将其下载...
完美收官,本文是爬虫实战的最后一章了,所以尽管本文着重呈现爬虫实战,但其中有一大部分内容专注于数...
JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。官方的json库是最常用的,它提供了简单...
独立样本T检验适用于比较两组独立样本的均值差异,而配对T检验则适用于比较同一组样本在不同条件下的均...