Issues with Multiprocessing Script (Using GetPass Module)

Running my multiprocessing script while using the getpass function in python (import getpass): and I keep getting this error message. I am also running this code in a .py file on my command prompt terminal, using windows 10 as well.
This is the error message:

This is the script:

import time
import multiprocessing
from multiprocessing import Pool
from multiprocessing import freeze_support
import getpass
import jaydebeapi
import pandas as pd
import numpy as np
from multiprocessing import Process, freeze_support, set_start_method

class multiprocess:
    def __init__(self):
        pass

    def test(self, Batch_test):
        pw_2 = getpass.getpass(prompt="Password", stream=False)

        
        PML = jaydebeapi.connect('com.ibm.db2.jcc.DB2Driver', 
        'jdbc:db2://he3qlxvtdbs957.fhlmc.com:50001/PMLFDB2',
                                 ['f408195', pw_2], 'C:/JDBC/db2jcc.jar')
        

        PML = PML.cursor()

        Batch_query = "select id_hstrcl_data_bch_load_frst_evnt as btch_strt, id_hstrcl_data_bch_load_last_evnt as btch_end from UDBADM.hstrcl_data_bch_load WHERE ID_HSTRCL_DATA_BCH_LOAD BETWEEN 1 and 2"

        PML.execute(Batch_query)
        Batch_records = PML.fetchall()
        Batch_records = pd.DataFrame(Batch_records)

        for ind in Batch_test:
            print(ind)
            
            first_evnt = Batch_records.iloc[ind, 0]
            last_evnt = Batch_records.iloc[ind, 1]
            PML_loan_Query = "select CAST(b.id_lpa_alt_loan AS INT) AS id_lpa_alt_loan from udbadm.pml_lst_cmpltd_trans_mtch a join udbadm.lpa_altv_loan_idtn b on a.id_evnt = b.id_evnt where b.cd_lpa_alt_loan_idtn = 'HewlettPackardGeneratedTransaction' and a.id_evnt between ? and ?"
            PML.execute(PML_loan_Query, (first_evnt, last_evnt))
            loan_records = PML.fetchall()
        

        return loan_records

    def run(self):
        processes = []

        for i in range(2):
            p = multiprocessing.Process(target=self.test, args=(i,))
            processes.append(p)

        for p in processes:
            p.start()


if __name__ == '__main__':
    a = multiprocess()
    a.run()

Pass a multiprocessing.Lock() to the worker processes. Acquire the lock in a with statement before calling getpass(). For example:

    def test(self, Batch_test, lock):
        with lock:
            pw_2 = getpass.getpass(prompt="Password")
        ...

It’s better in general, however, if all of the user interface is implemented in the main thread of the main process.

Note that False isn’t a valid value for the stream argument of getpass(). It should be a file-like object or None. It happens that the implementation tests for the default case with not stream instead of stream is None, so you got lucky there.

I see, thanks for your response.

Should I implement the user interface after the def init(self) tread instead?