在Linux上使用Python 3.4
我是并行编程的新手,我在为特定方法运行threading.Threads()时遇到问题,而对另一个方法运行模块multiprocessing.Process()。当另一个方法被注释掉时,两种方法都可以正常工作。这两种方法都与其他方法无关(例如,没有尝试共享数据)。但是当我拥有它们时,两个都不运行,一切都冻结了。据我所知,多处理似乎锁定了。我假设同样的事情适用于线程。
所以第一步是断言这是否可行?
(我有一种感觉,你们中的一些人会问这个原因......在多处理工作繁重时,线程会进行简单的捕获用户密钥检查)
我提供了一个示例(更像是伪代码)来帮助说明如何使用这些方法。
文件t.py
import threading
Class T:
Def __init__():
t = threading.Thread(target = self.ThreadMethod)
t.daemon = True
t.start()
Def ThreadMehod():
# capture key
文件m.py
import multiproceessing
Class M:
Def __init__():
mp = multiprocessing.Process(target = self.ProcessMethod)
mp.start()
Def ProcessMethod():
# heavy lifting
文件main.py
import T
import M
Class main:
Def __init__():
T()
Def DoTheProcess()
for i in range(5):
M()
答案 0 :(得分:0)
"没有。线程和多处理并不是相互排斥的。虽然存在已知的问题(例如,存在atfork的原因)限制了它们如何一起使用。" - J.F. Sebastian