简体   繁体   中英

MultiProcessing Python not working in windows

 Traceback (most recent call last):   File
   "C:\Users\HP\Downloads\1\main.py", line 27, in <module>
       p.start()   File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\process.py",
   line 121, in start
       self._popen = self._Popen(self)   File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\context.py",
   line 224, in _Popen
       return _default_context.get_context().Process._Popen(process_obj)   File
   "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\context.py",
   line 326, in _Popen
       return Popen(process_obj)   File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\popen_spawn_win32.py",
   line 93, in _init_
       reduction.dump(process_obj, to_child)   File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\reduction.py",
   line 60, in dump
       ForkingPickler(file, protocol).dump(obj) pickle.PicklingError: Can't pickle <function <lambda> at 0x039E9538>: attribute lookup
   <lambda> on __main_ failed

   C:\Users\HP\Downloads\1>Traceback (most recent call last):   File
   "<string>", line 1, in <module>   File
   "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\multiprocessing\spawn.py",
   line 102, in spawn_main
       source_process = _winapi.OpenProcess( OSError: [WinError 87] The parameter is incorrect

"" Im trying to open multiple chromedrivers/files.py at the same time/instant. But it shows the error. The code is to get the sample from file.py and create multiple same files like file_1.py..... Then run all the files that has created but is not working.

The Code is:

for proxy in file:
    shutil.copyfile('/home/hp/Documents/pr/proxy_project/template.py', '/home/hp/Documents/pr/proxy_project/file_{}.py'.format(i))
    file_name = "file_{}".format(i)
    file_list.append(file_name)
    with open('/home/hp/Documents/pr/proxy_project/file_{}.py'.format(i), 'r') as replicated_file:
        data = replicated_file.readlines()
    data_to_be_added = "proxy = '{}'\n".format(proxy.strip("\n"))
    data[16] = data_to_be_added
    with open('/home/hp/Documents/pr/proxy_project/file_{}.py'.format(i), 'w') as new_replicated_file:
        new_replicated_file.writelines(data)
    i += 1

for file_py in tuple(file_list):
    print("File name = {}".format(file_py))
    p = multiprocessing.Process(target=lambda: __import__(file_py))
    p.start()

There is another file that will be replicated when this code runs

On Windows when using multiprocessing you have to protect your main code with if name ==' main ': - try reading the multiprocessing documentation. – barny Mar 23 at 19:46

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM