小编Bru*_*ung的帖子

如何从python代码中获取.jar执行的输出?

我正在编写执行SQL到DBMS并检索数据的python模块.我正在尝试使用jdbc jar文件而不是本机DB驱动程序.我想知道如何在python中执行jar文件并从jar执行中获取输出.我想知道如何将SQL字符串传递给jar参数.这是简化的代码.任何帮助是极大的赞赏.

[java code]

public class GetDBResults {
    public static void main(String[] args) {

        // return sql results
        for(int i=0; i<=100; i++){
            // Is this the proper way to generate the output?
            System.out.println(i+"/t"+i*100+1);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

[python代码]

subprocess.call( [ 'java','-jar','./GET_DB_DATA.jar' )

# how to get results from jar execution?
# how to pass SQL string to jar execution?
Run Code Online (Sandbox Code Playgroud)

python java subprocess jar jdbc

8
推荐指数
1
解决办法
7326
查看次数

如何在进程之间共享pandas DataFrame对象?

这个问题与我之前发布的链接具有相同的意义.

(是否有一种避免内存深度复制或减少多处理时间的好方法?)

由于我遇到了'DataFrame'对象共享问题,我无处可去.

我简化了示例代码.

如果有任何专业人士修改我的代码以在没有Manager.list,Manager.dict,numpy sharedmem的进程之间共享'DataFrame'对象,我将非常感谢她或他.

这是代码.

#-*- coding: UTF-8 -*-'
import pandas as pd
import numpy as np
from multiprocessing import *
import multiprocessing.sharedctypes as sharedctypes
import ctypes

def add_new_derived_column(shared_df_obj):
    shared_df_obj.value['new_column']=shared_df_obj.value['A']+shared_df_obj.value['B'] / 2
    print shared_df_obj.value.head()
    '''
    "new_column" Generated!!!

          A         B  new_column
0 -0.545815 -0.179209   -0.635419
1  0.654273 -2.015285   -0.353370
2  0.865932 -0.943028    0.394418
3 -0.850136  0.464778   -0.617747
4 -1.077967 -1.127802   -1.641868
    '''

if __name__ == "__main__":

    dataframe = pd.DataFrame(np.random.randn(100000, 2), columns=['A', 'B'])

    # to shared DataFrame object, …
Run Code Online (Sandbox Code Playgroud)

python multithreading multiprocessing object-sharing pandas

7
推荐指数
1
解决办法
2443
查看次数

是否有一种避免内存深度复制或减少多处理时间的好方法?

我正在使用Python环境的Pandas模块制作一个基于内存的"大数据"实时计算模块.

因此响应时间是该模块的质量,非常关键且重要.

为了处理大型数据集,我将数据拆分并并行处理子拆分数据.

在存储子数据的结果的部分,花费很多时间(第21行).

我认为内部存储器深度复制出现或传递的子数据不在内存中共享.

如果我用C或C++编写模块,我将使用如下所示的指针或引用.

"process = Process(target = addNewDerivedColumn,args = [resultList,&sub_dataframe ])"

要么

"process = Process(target = addNewDerivedColumn,args = [resultList,sub_dataframe])

def addNewDerivedColumn(resultList,split_sub_dataframe&):...."

是否有一种避免内存深度复制或减少多处理时间的好方法? "不优雅"很好.我准备让我的代码变脏了.我尝试过weekref,RawValue,RawArray,Value,Pool但都失败了.

该模块正在MacOS中开发,最终将在Linux或Unix中运行.

不要考虑Windows操作系统.

这是代码.

真正的代码在我的办公室,但结构和逻辑与真实的相同.

1 #-*- coding: UTF-8 -*-' 
2 import pandas as pd
3 import numpy as np
4 from multiprocessing import *
5 import time
6
7
8 def addNewDerivedColumn(resultList, split_sub_dataframe):
9    
10    split_sub_dataframe['new_column']=    np.abs(split_sub_dataframe['column_01']+split_sub_dataframe['column_01']) / 2
11    
12    print split_sub_dataframe.head()
13    
14    '''
15     i think that the …
Run Code Online (Sandbox Code Playgroud)

python multithreading multiprocessing bigdata pandas

5
推荐指数
1
解决办法
2823
查看次数