我使用gRPC servicer开发了该应用程序。我的应用程序的重点是:
gRPC服务程序(下面的代码中的DexFxServicer类)具有Transmit方法,该方法由gRPC客户端在外部调用。
Transmit方法为hostList中的不同主机创建多个通道和存根。
其他应用程序创建并启动进程池。
每个子进程为其自己的存根调用gRPC方法SendHostListAndGetMetrics并接收响应迭代器。
此代码运行良好,应用程序调用Transmit方法并从进程池接收所有需要的结果。但是我注意到,当外部gRPC客户端多次调用Transmit方法时,此代码并未关闭其某些子进程。如htop所示,这会导致额外的非关闭进程的创建。 当我尝试通过channel.close()方法关闭gRPC通道时,将更加密集地创建额外的进程。
Python 2.7.12 grpcio == 1.16.1 grpcio-tools == 1.16.1 通用Ubuntu 16.04.6 LTS 4.4.0-143
public class MainActivity extends AppCompatActivity {
private String[] str = new String[10];
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.list_view); //build listview
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, str);
listView.setAdapter(adapter);
}
public void sendMessage(View view){
EditText editText = (EditText) findViewById(R.id.editText);
if(count < str.length){
str[count] = editText.getText().toString();
count++;
}
}
}
我希望看到不会创建额外的非关闭流程的代码。请给我建议在这种情况下该怎么办。