问题标签 [python-multithreading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1696 浏览

multithreading - 当我们已经拥有多线程时,多处理有什么好处?

我很困惑为 Web 应用程序使用多个进程是否会提高性能。Apache 的 mod_wsgi 提供了一个选项来设置要为守护进程组启动的进程数。我之前将 fastcgi 与 lighttpd 一起使用,它还可以选择为每个 fastcgi 应用程序配置最大进程数。

虽然我不知道多处理如何更好,但与单进程多线程模型相比,我确实知道它有一些不好的地方。例如,在多处理场景(链接)中,日志记录将更难实现,尤其是当您还希望日志轮换时。而且由于内存不能共享,如果你在内存中缓存一些东西(最直接的方式),你就会有多个重复的副本。

多个进程是更好地利用多核计算能力,还是产生更高的吞吐量?还是它们只是用于一些单线程应用程序?

0 投票
3 回答
2531 浏览

python - Python 的多处理不能很好地与 threading.local 配合使用?

我有两个进程(参见示例代码),每个进程都尝试访问一个 threading.local 对象。我希望下面的代码打印“a”和“b”(以任意顺序)。相反,我得到“a”和“a”。当我启动全新的进程时,如何优雅而稳健地重置 threading.local 对象?

编辑:作为参考,当我使用 threading.Thread 而不是 multiprocessing.Process 时,它按预期工作。

0 投票
1 回答
148 浏览

python - Python上的线程

我正在开发一个记录服务器内存使用情况的程序。服务器有多个实例正在运行,并且程序正在记录所有实例。

我试图弄清楚什么会更优化。

选项:(
假设有两个实例)
1. 单线程程序,一个一个地处理每个实例。延时0.5秒。
2. 双线程,每个处理一个实例,时间延迟:1秒。

有什么建议么?

0 投票
2 回答
196 浏览

python - 继续循环并继续前进(Python)

我的 Python 应用程序 (v2.7) 中有一个“while”循环,它基本上与蓝牙 GPS 设备通信,只要接收到数据,循环就会继续。本质上,while 循环如下所示:-

现在我想做的是让这个while循环在程序的整个生命周期中持续运行,直到蓝牙设备被关闭,这反过来将结束循环,因为不会接收到数据。尽管如此,随着这个 while 循环的继续,我想转向另一种解析数据的方法。

如何让循环继续运行并继续执行下一个命令?需要穿线吗?我是线程概念的新手,所以请耐心等待我:)

谢谢

0 投票
3 回答
614 浏览

python - 两个同时的 Python 循环和一个结果

我目前有一段 Python 2.6 代码同时运行两个循环。该代码使用 gps (gpsd) 模块和 scapy 模块。基本上,第一个函数 (gpsInfo) 包含一个连续的 while 循环,从 GPS 设备抓取 GPS 数据并将位置写入控制台。第二个函数(ClientDetect)在一个连续循环中运行,它还会嗅探空气中的 wifi 数据,并在找到特定数据包时打印此数据。我已经将这两个循环与 GPS 一起作为后台线程运行。我想要做的(并且一直在努力解决 5 天的问题)是因为,当 ClientDetect 函数找到匹配项并打印相应的信息时,我希望该命中时的相应 GPS 坐标也打印到安慰。目前我的代码似乎不起作用。

任何人都可以查看我的代码以了解如何最好地同时获取 wifi 命中时的数据,以便也打印 GPS 坐标?有人提到实现排队,但我对此进行了研究,但对于如何实现它无济于事。

如前所述,此代码的目的是扫描 GPS 和特定 wifi 数据包,并在检测到时打印与数据包相关的详细信息以及检测到的位置。

0 投票
3 回答
1490 浏览

python - Python暂停线程执行

有没有办法永久地“暂停”应用程序的主 python 线程?

我有一些代码可以触发两个线程

目前,当程序到达该函数的末尾时,它退出(之后主线程没有其他事情要做),杀死无限运行的线程(循环)。如何阻止主进程退出?我可以使用while True: None循环来完成,但这会占用大量 CPU,而且可能有更好的方法。

0 投票
5 回答
2072 浏览

python - 运行 Python 延迟循环的最不痛苦的方法

我有一个事件驱动的聊天机器人,我正在尝试实施垃圾邮件保护。我想让在一段时间内表现不佳的用户保持沉默,而不阻止应用程序的其余部分。

这是不起作用的:

理想情况下,如果 user_behave_badly() 为真,我想启动一个新线程,它只会禁止用户,然后休眠一段时间,取消禁止用户,然后线程消失。

据此,我可以使用以下方法实现我的目标:

“简单”通常是“好”的指标,这很简单,但我听说的关于线程的所有内容都表明它们会以意想不到的方式咬你。我的问题是:有没有比这更好的方法来运行一个简单的延迟循环而不阻塞应用程序的其余部分?

0 投票
1 回答
1190 浏览

python - 如何确保 Python 线程在其目标函数完成后终止?

我有一个产生线程的服务。
通过提供目标函数来启动线程。
当函数结束时,线程似乎不会“死亡”。我知道这一点是因为线程与Paramiko建立了一些 SSH 连接(通过Fabric),如果我这样做,lsof我会看到 SSH 连接在函数完成后仍然处于活动状态。
如何确保线程在其目标函数完成时死亡?

这是我正在使用的示例:

如果我sudo lsof | grep ssh在上面的代码处于无限循环中时在另一个终端中运行,我会看到以下内容,即使我知道线程不应该再存在:

0 投票
2 回答
582 浏览

python - Network multithread in python

I'm writing a script in Python that will scrape some pages from my web server and put them in a file. I'm using mechanize.Browser() module for this particular task.

However, I've found that creating one single instance of mechanize.Browser() is rather slow. Is there a way I could relatively painlessly use multihreading/multiprocessing (i.e. issue several GET requests at once)?

0 投票
3 回答
4247 浏览

python - Python:在while循环中使用join()的线程

我希望我的 while 循环最多为它在 for 循环中创建的所有线程阻塞 5 秒。但是,以下代码将被线程一一阻塞。我怎样才能接近我的目标?谢谢。