Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的线程_Python_Multithreading - Fatal编程技术网

Python中的线程

Python中的线程,python,multithreading,Python,Multithreading,关于如何在Python中使用线程的一般教程或良好资源 何时使用线程,它们如何有效,以及线程的一些一般背景[特定于Python]?当您希望同时运行两件事情,或者希望在后台运行一些事情而不减慢主进程时,应该使用线程。 我的建议是只在必要时使用线程。它们通常会增加程序的复杂性。 线程的主要文档如下: 这里有一些例子: 有几个教程 有一个很棒的pdf,由 Norman Matloff和Francis Hsu,加利福尼亚大学,戴维斯。< /P> 应尽可能避免使用螺纹。它们增加了很多复杂性、同步问题和难

关于如何在Python中使用线程的一般教程或良好资源


何时使用线程,它们如何有效,以及线程的一些一般背景[特定于Python]?

当您希望同时运行两件事情,或者希望在后台运行一些事情而不减慢主进程时,应该使用线程。
我的建议是只在必要时使用线程。它们通常会增加程序的复杂性。
线程的主要文档如下:
这里有一些例子:



有几个教程

有一个很棒的pdf,由 Norman Matloff和Francis Hsu,加利福尼亚大学,戴维斯。< /P>
应尽可能避免使用螺纹。它们增加了很多复杂性、同步问题和难以调试的问题。然而,有些问题需要它们(即GUI编程),但如果可以的话,我鼓励您寻找单线程解决方案。

在花费时间和精力编写多线程Python应用程序之前,需要记住的一点是,存在一个(GIL),因此您实际上不会一次运行多个线程

这使得线程不适合尝试利用多核或CPU。您可能会从多路复用其他资源(网络、磁盘等)中获得一些加速,但在我的经验中,这种加速从未特别明显

通常,我只在同时发生多个逻辑上独立的任务时使用线程,但我希望它们都在同一个VM中。一个线程从web中提取数据并将其放到队列中,而另一个线程从队列中弹出并写入数据库,类似于这样


在Python2.6中,有一个新的
多处理
模块非常酷-它有一个与
线程
模块非常相似的接口,但实际上产生了新的操作系统进程,避开了GIL。

对不起,线程不应该“尽可能避免”,GUI编程也不“需要”线程,也许这是正确的,但你能提供更好的理由/例子吗?