在服务器上运行python脚本以启动子进程或python线程时出错

在服务器上运行python脚本以启动子进程或python线程时出错,python,multithreading,centos,subprocess,python-multithreading,Python,Multithreading,Centos,Subprocess,Python Multithreading,我有两个python脚本,用于启动子流程。以下是我的脚本结构: MAIN.py 这些脚本除了启动整个流程并通过子流程调用另一个python脚本外,什么都不做 sub_process.py 这个脚本首先执行一堆SQL语句,然后通过再次调用自身来启动另一个子进程。生成的子流程数取决于每个子流程调用传递的参数。此外,SQl语句主要是insert语句 conn = connect(host=host_ip, port=21050, timeout=3600) cursor = conn.

我有两个python脚本,用于启动子流程。以下是我的脚本结构:

MAIN.py

这些脚本除了启动整个流程并通过子流程调用另一个python脚本外,什么都不做

sub_process.py

这个脚本首先执行一堆SQL语句,然后通过再次调用自身来启动另一个子进程。生成的子流程数取决于每个子流程调用传递的参数。此外,SQl语句主要是insert语句

    conn = connect(host=host_ip, port=21050, timeout=3600)
    cursor = conn.cursor()

    sql = "SQL statement"
    cursor.execute(sql)
    result_set = cursor.fetchall()

    for col1, col2 in result_set:
        sql = "SQL statement 2"
        cursor.execute(sql)

        sql = "SQL statement 3"
        cursor.execute(sql)

        if col1 == 'para':
               result = subprocess.Popen([sys.executable,"./sub_process.py"] + paramet)

   result.wait()
现在,此安装程序在我的本地计算机上运行正常,但当我尝试在服务器上运行相同的安装程序时,它会引发以下错误:

当我转到impala UI检查查询状态时,我将异常视为状态。在显示为异常的查询配置文件上,它还显示查询状态:超出内存限制。但是当我从本地机器执行相同的查询时,没有异常,一切都正常运行

即使我只执行一条sql语句而不是一堆sql语句,同样的错误也会出现在服务器上,但不会出现在我的本地计算机上。我试图寻找一些原因,但找不到任何可能导致此错误的原因

我也尝试过python线程,但仍然得到与子进程相同的错误。线程代码的结构与上面的子进程相同

我的服务器上有CentOS 6.6、impala 2.0和impyla 0.9


我如何找到原因并解决它?如果问题没有得到解决,那么通过其他方式获得相同行为的解决方法是什么?我基本上想要的是,一旦一个进程在执行过程中达到某个点,它就应该启动另一个进程,并继续同时执行。一旦完成,则应等待子流程完成后再退出。

我建议使用多处理。`如果paramet='para':result=subprocess.Popen[sys.executable,./sub_process.py]+paramet`无法工作。你能发布全部错误吗?@User这就是我在上面发布的全部错误。它没有显示任何其他错误
    conn = connect(host=host_ip, port=21050, timeout=3600)
    cursor = conn.cursor()

    sql = "SQL statement"
    cursor.execute(sql)
    result_set = cursor.fetchall()

    for col1, col2 in result_set:
        sql = "SQL statement 2"
        cursor.execute(sql)

        sql = "SQL statement 3"
        cursor.execute(sql)

        if col1 == 'para':
               result = subprocess.Popen([sys.executable,"./sub_process.py"] + paramet)

   result.wait()
File "/usr/local/lib/python2.7/site-packages/impala/dbapi/hiveserver2.py", line 151, in execute
    self._execute_sync(op)
  File "/usr/local/lib/python2.7/site-packages/impala/dbapi/hiveserver2.py", line 159, in _execute_sync
    self._wait_to_finish()  # make execute synchronous
  File "/usr/local/lib/python2.7/site-packages/impala/dbapi/hiveserver2.py", line 181, in _wait_to_finish
    raise OperationalError("Operation is in ERROR_STATE")
OperationalError: Operation is in ERROR_STATE