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

python - 如何使用 threading 模块暂停和恢复线程?

我计划在线程中运行一个很长的过程,否则它将冻结我的 wxpython 应用程序中的 UI。

我在用着:

启动线程并且它可以工作,但我不知道如何暂停和恢复线程。我在 Python 文档中查找了上述方法,但找不到它们。

谁能建议我怎么做?

0 投票
2 回答
10757 浏览

python - 使用 sqlite3 包在 python 中的不同线程之间共享一个:memory: 数据库

我想在 python 中创建一个 :memory: 数据库并从不同的线程访问它。本质上是这样的:

并让所有连接都引用同一个数据库。

我知道传递check_same_thread=True给连接函数并在线程之间共享连接,但如果可能的话,我想避免这样做。谢谢你的帮助。

编辑:更正了一个错字。我最初说“让所有连接都引用同一个线程”用线程代替数据库。

0 投票
1 回答
394 浏览

python - 除非最后一条语句很慢,否则python函数无法返回

我正在研究一个子类,threading.Thread它允许调用它的方法并在由调用它们的对象表示的线程中运行,而不是通常的行为。为此,我在目标方法上使用装饰器,将方法调用放在 a 中collections.deque,并使用该run方法处理双端队列。

run方法使用一个while not self.__stop:语句和一个threading.Condition对象来等待调用被放置在双端队列中,然后调用self.__process_calls。循环的else一部分对. 如果,则在任何尝试从另一个线程调用“可调用”方法之一时引发异常。while__process_callsself.__stop

问题是除非最后一条语句是我在调试期间发现的,__process_calls否则无法返回。print我已经尝试过,但没有a = 1明确的工作。return但是,将任何print语句作为函数的最终语句,它都会返回并且线程不会挂起。有什么想法吗?

编辑:David Zaslavsky 指出,印刷品有效,因为它需要一段时间,我已经确认

代码有点长,但希望我上面的解释足够清楚以帮助理解它。

0 投票
1 回答
220 浏览

python - 如果没有共享资源,卡住的 Python 线程会阻碍其他线程吗?

我正在考虑使用 Python 调用各种 dll,这些 dll 将执行诸如访问 LAN(在 Windows 上)或发出 HTTP 请求之类的操作。这些 dll 可能写得不好并被卡住。我的第一个问题是,在 Python 线程中隔离这些 dll 调用是否会保证 Python 主线程不会卡住?我的第二个问题是如果 DLL 陷入无限循环,Python 是否可以杀死线程?

我知道我可以通过在自己的进程中启动 dll 来解决这个问题,但我更希望只有一个进程。

我可以使用最新版本的 Python。

0 投票
1 回答
346 浏览

python - Google Application Engine Workaround 上的 Python 线程(或它们的等价物)?

我想制作一个执行以下操作的 Google App Engine 应用:

  1. 客户端发出异步 http 请求
  2. 服务器开始处理该请求
  3. 客户端发出ajax http请求以获得进度

问题是服务器处理(步骤#2)可能需要超过 30 秒。

我知道您不能在 Google Application Engine 上拥有线程,并且所有任务都必须在 30 秒内完成,否则它们将被关闭。有没有办法解决这个问题?

另外,我使用 python-django 作为后端。

0 投票
1 回答
165 浏览

python - 在 Python 中,给定一个全尺寸图像目录,如何使用多个 CPU 内核生成缩略图?

我有一台 16 核的机器,但我当前的调整大小功能只使用一个核心,这对于大型图像目录来说效率非常低。

任何帮助将不胜感激。谢谢你。

0 投票
1 回答
416 浏览

python - 使用 python 读/写文件中的资源使用、选项和注意事项

我正在使用 python 进行开发,对游戏来说还是新手,我想确保我正确地解决了这个问题。我很乐意接受所有建议。

想象一下,尝试使用存储在多个平面文件中的数据,在许多情况下总大小超过 20-35 GB。在最一般的情况下,这些文件可能是分隔的(csv、tab)或可能只是固定宽度。目标是获取这些文件或每个文件的某个子集,解析输入(每列代表数据中的一个变量),并将其发送到某个目的地(可能是本地或远程 sql,各种其他本地文件输出格式,包括文本或某些专有数据格式,例如 stata 的 .dta)

目标是使用可用的系统资源以尽可能快的方式执行此操作(我猜是每秒 kb 吗?)

问题:

  1. 使用已编译的 C 进行读取操作是否会提高效率?如果是这样,我应该学习如何使用哪个库?而且,c 也应该进行解析和输出吗?

  2. 如果文件以 .zip 或 .gz 的形式出现,是否应该在读取和写入之前解压缩整个文件,还是将其压缩并使用能够从压缩文件中读取的库?

  3. 程序应该使用多线程吗?我想象读取文件的某个子集(例如,一次 n 行),解析和输出,例如,j 个线程。一次读取一行文件是最佳的并不明显......而且似乎最佳线程和进程数将取决于可用资源和作业的大小。
    因此,也许代码应该足够“智能”,以最佳地确定要使用多少线程以及每个线程应该完成多少工作。

  4. 如何衡量和比较不同方法之间的效率?

  5. 程序是否应该能够动态地执行此操作并根据其性能选择输入输出方法?(方法 A 是否总是严格控制方法 B,或者在部署环境中进行特殊更改很重要)

需要明确的是,我愿意接受几乎任何级别的代码效率低下,以换取资源效率的不可忽略的改进

我希望这些问题能让我清楚地了解我想要弄清楚的事情。我的编程经验主要限于科学/统计软件包,所以如果我的任何问题归结为“rtm”,请温和并建议适当的手册。

0 投票
3 回答
84822 浏览

python - Python 线程上的守护进程属性的含义

我对将线程设置为守护进程意味着什么感到有些困惑。

文档是这样说的:

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

我不确定这与普通线程有何不同。

这是说这个程序永远不会完成吗?

即使主线程完成它的执行。虽然会立即完成?

我问是因为我有一种情况,在我的主线程中我正在调用 sys.exit(),并且进程只是挂起并且我的其他线程正在运行,因为我可以看到日志。

这是否与 sys.exit() 被调用而线程处于活动状态有什么关系?

0 投票
1 回答
903 浏览

wxpython - GUI 中可靠的跨平台线程支持:tkinter、pygtk、wxpython 或 pyqt

我对 pygtk 有一些经验,我觉得很舒服,除非在 windows 上需要线程,所以我想知道, 我的同事程序员如何在跨平台环境中处理 tkinter、pyqt 和 wxpython 中的线程(或至少linux-windows)?.

I'll really appreciate sample threading code, with each toolkit.

0 投票
1 回答
428 浏览

python - PyGTK 和可视化 python

我正在使用 PyGTK 开发一个应用程序,它将利用 visual-python 的 3d 绘图和动画,但我无法让两个库一起工作:它们要么在我关闭 Gtk 窗口时挂起,要么在我运行时卡住应用程序。

我尝试过使用线程并且它们并排运行,但是当我关闭 visual-python 的窗口时,这会杀死 python 的解释器,从而引发分段错误。

有没有人能够从 PyGtk 应用程序中使用 visual-python?