该进程无法访问该文件,因为它正在被python中的另一个进程使用

问题描述 投票:0回答:1
 def worker(ip, started_date, full_path):


    planner_file = full_path+"\\"+"export_"+str(ip)+".txt"

    print "planner file", planner_file

    arg_list = []
    action ="MakeExport"
    arg_list.append(upnp_path)
    arg_lista.append(action)
    arg_list.append(' ip=')
    arg_list.append(ip)
    arg_list.append(" 2>NULL")


    command = ['python', arg_list]

    p = Popen(command, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT)

    output = p.stdout.read()

   with open(planner_file, "a") as pf:
       pf.write(output)




if __name__=='__main__':

    rack_number, started_date, full_path, ips = main()

    pid = os.getpid()

   print('Main Process is started and PID is: ' + str(pid))

   process_list = []

   for ip in ips:
        p = Process(target=worker, args=(ip, started_date, full_path))
        p.start()
        child_pid = str(p.pid)
        print('PID is:' + child_pid)
        process_list.append(child_pid)

   children = multiprocessing.active_children()

   # print process_list

  while children != []:
     time.sleep(1)
     children = multiprocessing.active_children()

我正在尝试将一些IP地址数据导出到txt文件。尽管可以使用单个IP地址正常运行,但是如果我尝试使用多个IP地址的脚本,则会在所有其他IP txt文件中收到以下错误。

对于第一个IP地址,脚本可以正确导出数据。对于所有其他剩余的ip,它说;

'该进程无法访问该文件,因为它正在被另一个进程使用。'

例如:export_1.8.5.20.txt(正确导出了第一个IP数据)export_1.8.5.21.txt(表示进程无法访问该文件)

我没有从脚本中得到任何错误。只需在txt文件中获取上述详细信息即可。

任何帮助将不胜感激。谢谢

python python-2.7 subprocess multiprocessing export-to-text
1个回答
0
投票

这似乎是已知的错误:https://bugs.python.org/issue33369https://bugs.python.org/issue19575

尝试在Popen()调用周围加锁。

© www.soinside.com 2019 - 2024. All rights reserved.