我正在尝试在Windows机器上使用线程和多处理的第一个正式的python程序.我无法启动进程,python提供以下消息.问题是,我没有在主模块中启动我的线程.线程在类中的单独模块中处理.
编辑:顺便说一句,这个代码在ubuntu上正常运行.不是在窗户上
RuntimeError:
Attempt to start a new process before the current process
has finished its bootstrapping phase.
This probably means that you are on Windows and you have
forgotten to use the proper idiom in the main module:
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce a Windows executable.
Run Code Online (Sandbox Code Playgroud)
我的原始代码很长,但我能够在删节版本的代码中重现错误.它分为两个文件,第一个是主模块,除了导入处理进程/线程和调用方法的模块之外,它只做很少的事情.第二个模块是代码的核心所在.
testMain.py:
import parallelTestModule
extractor = parallelTestModule.ParallelExtractor()
extractor.runInParallel(numProcesses=2, numThreads=4)
Run Code Online (Sandbox Code Playgroud)
parallelTestModule.py:
import multiprocessing …Run Code Online (Sandbox Code Playgroud) 我们有很多来自Cassandra存储的各种网站的用户互动数据,例如Cookie,网页访问,广告浏览,点击广告等等.我们想要进行报道.我们当前的Cassandra架构支持基本报告和查询.但是,我们还希望构建大型查询,这些查询通常涉及大型列族(包含数百万行)上的连接.
什么方法最适合这个?一种可能性是将数据提取到关系数据库(如mySQL)并在那里进行数据挖掘.替代可能是尝试使用hadoop与蜂巢或猪为此目的运行map reduce查询?我必须承认我对后者没有经验.
任何人都有一个与另一个的性能差异的经验?您是否会在实时Cassandra生产实例或备份副本上运行map reduce查询以防止查询负载影响写入性能?
我有一些在巨大的桌子上运行的大量查询.这些查询似乎是CPU瓶颈,并运行了几个小时.据我所知,Oracle有很多新功能,11g,第2版内部并列化查询的执行.但是无论我在查询中添加什么样的提示,我似乎都不能在数据库框上使用多个CPU.我有一个非常值得尊敬的Solaris机器,有8个CPU,但是每次运行这个查询时,我最终只是将一个CPU推到100%,然后在那里坐了几个小时.
我尝试过的提示是:
SELECT /*+ PARALLEL */ ...
SELECT /*+ PARALLEL(5) */ ...
SELECT /*+ PARALLEL(10) */ ...
Run Code Online (Sandbox Code Playgroud)
在查看盒子上的整体CPU消耗时,这些似乎都不起作用.似乎总是将一个CPU固定在100%.不幸的是,即使解释计划似乎也需要永远运行.我会尝试用不同的提示获得不同的解释计划,看看是否有帮助.有些查询是否可能是不可并行的,即使它们的运行时间是在几小时内?!!?此查询中的主表有3.35亿行.
SQL查询文本:
系统参数:
编辑:
详细的解释计划 - 没有并行性:
优化器相关的系统参数:
进一步编辑: 我们已经联系Oracle了解为什么EXPLAIN PLAN需要超过2个小时.我们正试图运行各种解释计划.
我有一个结构如下的表:
column1, column2, column3, X1, X2, X3, X4
A1, A2, A3, 5, 6, 1, 4
Run Code Online (Sandbox Code Playgroud)
我想把它转换成
column1, column2, column3, Key, Value
A1, A2, A3, X1, 5
A1, A2, A3, X2, 6
A1, A2, A3, X3, 1
A1, A2, A3, X4 4
Run Code Online (Sandbox Code Playgroud)
我已经能够使用与“UNION ALL”缝合在一起的 4 个查询来完成此操作,但由于表很大并且每个选择都会转换为冗长的映射缩减,因此使用 UNION 会使查询花费的时间是理想情况下的 N 倍。其中 N 是要旋转的列数。
我尝试探索explode()预定义的UDTF,但我无法在这个示例中使用它。我尝试了类似以下的内容,但无法使语法正常工作。
select column1, column2, column3, explode(Map('X1':X1, 'X2':X2, ..))
Run Code Online (Sandbox Code Playgroud)
有人可以准确指出如何进行这项工作吗?我猜我可以推出自己的 UDTF,但我希望这是相当标准的东西?
编辑: stackoverflow 上 还有另一个问题,其中提出了类似的问题,但表述很复杂,在我看来,错误的答案当前被标记为正确的答案。我认为这个问题更简洁、更切题。