问题标签 [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 投票
8 回答
149617 浏览

python - 守护线程解释

Python 文档 中它说:

可以将线程标记为“守护线程”。这个标志的意义在于,当只剩下守护线程时,整个 Python 程序就退出了。初始值继承自创建线程。

有没有人对这意味着什么有更清晰的解释,或者有一个实际示例显示您将线程设置为的位置daemonic

为我澄清一下:所以你不会将线程设置为的唯一情况daemonic是,当你希望它们在主线程退出后继续运行时?

0 投票
20 回答
472857 浏览

python - 函数调用超时

我在 Python 中调用一个函数,我知道它可能会停止并迫使我重新启动脚本。

如何调用该函数或将其包装在什么中,以便如果它花费超过 5 秒的时间,脚本将取消它并执行其他操作?

0 投票
7 回答
81907 浏览

python - Queue.Queue 与 collections.deque

我需要一个队列,多个线程可以将内容放入其中,并且多个线程可以从中读取。

Python 至少有两个队列类,Queue.Queuecollections.deque,前者似乎在内部使用后者。两者都声称在文档中是线程安全的。

但是,队列文档还指出:

collections.deque 是无界队列的替代实现,具有不需要锁定的快速原子 append() 和 popleft() 操作。

我想我不太明白:这是否意味着双端队列毕竟不是完全线程安全的?

如果是这样,我可能无法完全理解这两个类之间的区别。我可以看到 Queue 添加了阻塞功能。另一方面,它失去了一些双端队列特性,比如对 in-operator 的支持。

直接访问内部双端队列对象是

x in Queue().deque

线程安全?

另外,当双端队列已经是线程安全的时,为什么队列要为其操作使用互斥锁?

0 投票
8 回答
284062 浏览

python - 如何在 Python 中获取线程 id?

我有一个多线程 Python 程序和一个实用函数 ,writeLog(message)它会写出时间戳,然后是消息。不幸的是,生成的日志文件没有说明哪个线程正在生成哪个消息。

我希望writeLog()能够在消息中添加一些内容以识别哪个线程正在调用它。显然我可以让线程传递这些信息,但这需要更多的工作。是否有一些os.getpid()我可以使用的线程等价物?

0 投票
13 回答
95723 浏览

python - 从线程返回值

如何让线程将元组或我选择的任何值返回给 Python 中的父级?

0 投票
6 回答
180152 浏览

python - 主程序结束时如何终止线程?

如果我有一个无限循环中的线程,有没有办法在主程序结束时终止它(例如,当我按Ctrl+时C)?

0 投票
21 回答
1091071 浏览

python - 如何在 Python 中使用线程?

我正在尝试理解 Python 中的线程。我查看了文档和示例,但坦率地说,许多示例过于复杂,我无法理解它们。

您如何清楚地显示为多线程划分的任务?

0 投票
4 回答
1140 浏览

python - 在 python 脚本中增加吞吐量

我正在通过 dig 处理来自 DNSBL 的数千个域名列表,创建一个包含 URL 和 IP 的 CSV。这是一个非常耗时的过程,可能需要几个小时。我的服务器的 DNSBL 每十五分钟更新一次。有没有办法可以增加我的 Python 脚本的吞吐量以跟上服务器的更新?

编辑:脚本,根据要求。

0 投票
2 回答
480 浏览

python - 如何将这个多线程 python 脚本分解为“块”?

我正在根据使用 urllib 从 Siteadvisor 获取的结果将 100k 域名处理成 CSV(我知道,这不是最好的方法)。但是,我当前的脚本创建了太多线程并且 Python 遇到了错误。有没有办法我可以“分块”这个脚本一次做 X 个域(比如 10-20)来防止这些错误?提前致谢。

编辑:新版本,基于 andyortlieb 的建议。

0 投票
3 回答
4371 浏览

python - 为什么我不能在 Python 的新线程中创建 COM 对象?

我正在尝试从 Python 的新线程中的 dll 创建一个 COM 对象 - 所以我可以在该线程中运行消息泵:

这是我得到的错误跟踪:

有任何想法吗?